2016-05-29 61 views
1

我想下載一個存儲在S3上的文件到我本地的Laravel安裝來操作它。希望得到一些幫助。Laravel從S3下載到本地

我的配置數據設置正確,因爲我可以毫無困難地上傳它。我使用以下模式「user-> id/media-> id.mp3」將它保存在S3中 - >注意事實上,我不只是在S3上轉儲文件,我將它們保存在目錄中。

將文件成功上傳到S3後,我更新了數據庫中的保存路徑以顯示「user-> id/media-> id.mp3」,而不是一些長的公共url(是否有錯誤)?

當我以後回去嘗試下載文件時,我在S3處得到FileNotFoundException。我正在這樣做。

$audio = Storage::disk('s3')->get($media->location); 

奇怪的是,在例外它表明,它不能獲取資源,但是當我把同樣的網址在瀏覽器中會顯示該文件沒有任何麻煩。爲什麼文件系統無法獲取文件?

我試圖在「get」之前做一次「has」檢查,並且has檢查出現錯誤。

我是否需要將完整的公共URL保存在數據庫中才能正常工作?我試過了,它沒有幫助。我覺得我錯過了很簡單的東西,這讓我瘋狂!

+0

你的網址可能是這樣的https://s3.amazonaws.com/your_bucket/some_folder/some_other_folder/my.file所以你需要通過從桶中獲取文件的桶之後的完整路徑 –

回答

1

晚的答案,但對別人很重要,

$s3_file = Storage::disk('s3')->get(request()->file); 
$s3 = Storage::disk('public'); 
$s3->put("./file_name.tif", $s3_file); 

的$ s3_file的響應將是一個流,你可以保存數據流使用Laravel把文件的方法到文件,你會發現在storage/public該流文件目錄。