2016-01-25 230 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文檔並沒有讓我深入瞭解這個問題出現的方式/原因。任何想法發生了什麼?


編輯:經歷一些其他的stackoverlflow線程後:

看來,如果這個問題可能會更關係到我的服務器DNS?我在一個Linode實例的Ubuntu 14.04上。我使用Nginx作爲我的網絡服務器。

+0

給我的輸出:$請求 - >文件( '文件') - > getClientOriginalName()的file_get_contents($請求 - >文件( '文件')) –

+0

'$請求 - >文件(」文件') - > getClientOriginalName()'返回'image.png'和'file_get_contents($ request-> file('file'))'返回上面在錯誤屏幕截圖 – Xecure

+0

中的第13行上看到的長輸出。 :: get((string)$ request-> file('file'))並添加「使用文件」;在頂部..而不是這個:file_get_contents($ request-> file('file')) –

回答

1

檢查您的S3 API endpoints是否正確。

要消除權限(角色/憑證)和相關設置錯誤,請嘗試使用AWS CLI s3api從該服務器執行put-object

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-east-1' – Xecure

2

您的S3配置似乎是錯誤的,因爲它嘗試使用的主機s3.us-standard.amazonaws.com無法在我的機器上解析。您應該驗證您是否配置了正確的存儲桶+區域。