[英]force download file from s3 url
我在 URL 中有一個沒有文件擴展名的 s3 URL。 有什么辦法可以直接從 URL 強制下載文件
https://s3-external-1.amazonaws.com/media.twiliocdn.com/AC451bab3cca7e01e20ee6bf1e746bed1f/10b62b6d5fe2f69be39840ce1201a2e7
在數據庫中,我存儲此 URL 以顯示圖像或任何文件,但現在我需要單擊下載按鈕在用戶系統中下載此圖像
僅供參考:這不是我們的 s3 存儲桶,但這是存儲我們的媒體的 Twilio 服務存儲桶。
從 controller 中,您可以返回下載響應,讓您指定具有自定義名稱的文件。 像這樣...
return response()
->download(
$file,
'download.jpeg',
);
您可以將圖像臨時存儲在文件系統中,然后將其作為下載響應發送。
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
$response = Http::get(
'https://s3-external-1.amazonaws.com/media.twiliocdn.com/AC451bab3cca7e01e20ee6bf1e746bed1f/10b62b6d5fe2f69be39840ce1201a2e7'
);
file_put_contents($file = '/tmp/' . Str::uuid(), $response->body());
preg_match('/filename=\"(.+)\"/', $response->header('content-disposition'), $matches);
return response()->download($file, $matches[1], [
'Content-Type' => $response->header('content-type'),
])->deleteFileAfterSend();
最后,在投入了這么多小時后,我找到了解決方案。
public function download($media){
$name = now()->format('m-d-Y-h:i:s') . '.' . Illuminate\Http\Testing\MimeType::search($media->content_type);
return response()->streamDownload(function () use ($media){
echo file_get_contents($media->url);
}, $name);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.