2016-01-25 5 views
1

Я бегу приложение Laravel с кодом, как это в одном из моих функций контроллера:AWS s3 загрузка файлов через неудачу Laravel

$s3 = Storage::disk('s3'); 
$s3->put($request->file('file')->getClientOriginalName(), file_get_contents($request->file('file'))); 

Я считаю, что Laravel использует Flysystem за кулисы, чтобы подключиться к s3. При попытке выполнить этот кусок кода я получаю ошибку: enter image description here

Документы Laravel не дают мне подробного описания того, как/почему эта проблема возникает. Любая идея, что здесь происходит?


EDIT: После прохождения нескольких других stackoverlflow нитей:

кажется, что этот вопрос может быть больше связан с моим сервером DNS? Я нахожусь на ubuntu 14.04 на экземпляре Linode. Я использую Nginx в качестве своего веб-сервера.

+0

дать мне выход:> файл $ request- ('файл') -> getClientOriginalName(), file_get_contents ($ request-> файл ('файл')) –

+0

'$ request-> файл (» file ') -> getClientOriginalName() 'возвращает' image.png' и 'file_get_contents ($ request-> file (' file '))' возвращаем длинный вывод, который вы видите выше в строке 13, в скриншоте ошибки – Xecure

+0

попробуйте это: Файл :: get ((string) $ request-> file ('file')) и добавить «use File»; наверху. Вместо этого: file_get_contents ($ request-> file ('file')) –

ответ

1

Проверьте правильность вашего кода S3 API endpoints.

Чтобы устранить разрешение (роль/учетные данные) и связанные с ним ошибки установки, попробуйте сделать put-object с использованием AWS CLI s3api с этого сервера.

aws s3api put-object --bucket example-bucket --key dir-1/big-video-file.mp4 --body e:\media\videos\f-sharp-3-data-services.mp4 
+0

Этот ответ помог мне найти проблема. Несмотря на то, что в документах s3 указано, что «Amazon S3 переименовал регион США стандартом в регион США (Северная Вирджиния), чтобы соответствовать региональным соглашениям об именах AWS. Для конечной точки нет изменений, и вам не нужно вносить какие-либо изменения в ваше приложение. «Мне не удалось связаться с областью« us-standard ». Мне пришлось сменить имя на 'us-east-1' – Xecure

2

Ваша конфигурация S3 кажется неправильной, так как хост, который он пытается использовать s3.us-standard.amazonaws.com, также не может быть разрешен на моей машине. Вы должны убедиться, что вы настроили область правого ковша +.

 Смежные вопросы

  • Нет связанных вопросов^_^