0

我有下面的路線,將加載從給定的URL文件,我需要這實際下載文件(MP4,JPG,PDF格式),而不是打開在內置查看器中的瀏覽器。從S3路由Laravel下載文件(不在瀏覽器中打開)

// 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

在我的情況簡單的錨鏈接下載文件...

<a href="https://mybucket.s3.amazonaws.com/folder/filename.pdf"> file name </a> 
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); 
      } 
0

同等答案下載空文件。

$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} . '"' 
]); 
相關問題