使用laravel从amazon s3直接下载到客户端

时间:2014-12-29 08:37:38

标签: php laravel amazon-s3

我试图让我的客户端直接从amazon s3下载一个大文件,而无需通过服务器下载

使用此功能:

        $downloadUrl = $s3->getObjectUrl('dev-checkmate', '1.zip', '+5 minutes', array(
            'ResponseContentDisposition' => 'attachment; filename="test.zip"','Content-Type' => 'application/zip',
    ));
    return $downloadUrl;

给了我一个有效的网址,我可以粘贴到浏览器并开始下载,如何让我的网页开始下载而无需重定向到用户的网址? (我不希望他得到一个空白页面,我希望他留在我的网页上)

或者可能有一种不同的方法让用户直接从s3开始下载? 我不想使用我的服务器这样做的原因是文件非常大,我的服务器上的带宽很慢。

1 个答案:

答案 0 :(得分:0)

我建议您使用javascript在新窗口/标签中打开下载URL。通常,如果浏览器检测到下载,则白页会自动关闭。

这是一个获取下载URL然后进行重定向的示例:

$.ajax({
    url: '/download/test.zip', // change this to your real URL
    type: 'GET'
}).done(function(data){
    window.open(data);
});

或者,您可以在渲染视图时插入下载网址,这样您就不需要进行该ajax调用。