我有以下路线将从给定的URL加载文件,我需要这个实际下载文件(mp4,jpg,pdf)而不是在内置查看器的浏览器中打开。
// Download from CDN Route
Route::get('cdn/{url}', function($url)
{
return Redirect::away($url);
})->where('url', '(.*)');
所有文件都存储在外部,因此显然Resource::download()
实际上不起作用。
我可以使用的只有亚马逊网址:https://mybucket.s3.amazonaws.com/folder/filename.pdf
有关如何强制浏览器从S3下载文件的任何建议?
答案 0 :(得分:0)
在我的情况下,简单的锚链接正在下载文件......
<a href="https://mybucket.s3.amazonaws.com/folder/filename.pdf"> file name </a>
答案 1 :(得分:0)
试试这段代码。
使用 flysystem
更新作曲家 $path = 'https://mybucket.s3.amazonaws.com/folder/filename.pdf';
if(Storage::disk('s3')->has($path)){
$data = Storage::disk('s3')->get($path);
$getMimeType = Storage::disk('s3')->getMimetype($path);
$newFileName = 'filename.pdf';
$headers = [
'Content-type' => $getMimeType,
'Content-Disposition'=>sprintf('attachment; filename="%s"', $newFileName)
];
return Response::make($data, 200, $headers);
}
答案 2 :(得分:0)
pari回答下载空文件。
$s3Client = AWS::createClient('s3');
$stream = $s3Client->getObject(
[
'Bucket' => 'bucket name',
'Key' => 'filename',
'SaveAs' => '/tmp'.filename
]);
return response($stream['Body'], 200)->withHeaders([
'Content-Type' => $stream['ContentType'],
'Content-Length' => $stream['ContentLength'],
'Content-Disposition' => 'attachment; filename="' .{filename with extention} . '"'
]);
答案 3 :(得分:0)
我们如何从另一台服务器下载带有外部链接的视频。不是s3。这是一台普通的服务器,文件在那里,但是不起作用。我已经写了这段代码
array(4) { ["dj"]=> string(0) "" ["facebook"]=> string(0) "" ["email"]=> string(0) "" ["code"]=> string(4) "3568" }