【问题标题】:Download a file from S3 - Laravel 5.7从 S3 下载文件 - Laravel 5.7
【发布时间】:2019-03-19 09:46:52
【问题描述】:

我正在尝试从 amazon s3 下载文件,这里的代码适用于 docx、pdf 等文件...但是对于图像,它只是打开一个新选项卡,并在那里显示图像,没有开始下载。

function downloadLink($docpath)
{
    $s3 = \Storage::disk('s3');

    return $s3->url($docpath);
}

我用下载替换了url方法,但是根本不起作用,它说err 404 page not found。

最好的问候

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    默认情况下,浏览器会以这种方式运行,但您可以通过在来自服务器的响应中添加以下 HTTP 标头来强制它开始下载:

    Content-Type: application/octet-stream
    Content-Disposition: attachement; filename="example.png"
    

    【讨论】:

    • 你是对的。然后你必须用八位字节流传递文件,然后它应该可以下载文件。或者当它是为某人下载时制作一个 ZIP 文件。
    • 这是唯一的方法吗?我必须承认我不熟悉 js 或 ajax 没有什么方法可以强制下载 ^ 图像?因为其他文件工作正常
    • 这与 javascript 无关,请查看 PHP 函数 'header()' 或在此处阅读 Laravel 中的 HTTP 响应:laravel.com/docs/5.8/responses#attaching-headers-to-responses
    • return response($s3->url($docpath))->header('Content-Type', 'application/octet-stream')->header('Content-Disposition', '附件;文件名="example.png"');从我从 laravel 文档中读到的类似这样的东西.. 但是它不起作用
    • 我认为您的原始代码 sn-p 实际所做的是将用户重定向到 S3 URL。如果是这样,请尝试在 S3 管理控制台中添加标头。 (在这种情况下,相关响应的标头来自 S3,而不是来自您的 Laravel 项目。)
    猜你喜欢
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    相关资源
    最近更新 更多