gpt4 book ai didi

php - 强制从 s3 亚马逊服务器下载

转载 作者:IT王子 更新时间:2023-10-29 00:00:35 26 4
gpt4 key购买 nike

我一直在开发一个新的 Web 应用程序,它依赖于 Amazon S3 服务器作为存储系统,并以 Codeiginter 作为 PHP 框架。

我需要在单击链接时强制下载文件。原始 URL 如下所示:

http://www.our-web.com/download/do/1.jpg

它会生成指向 Amazon S3 服务器上实际文件的临时签名 URL,如下所示:

http://main_bucket.s3.amazonaws.com/post/1/1.jpg?AWSAccessKeyId=AKIAJEOQKYPKC3CCU5RA&Expires=1305395426&Signature=iuzCdA22gImLK192%2BMAhk8OkAY8%3D

我需要让文件在用户单击链接后立即从真实的亚马逊 URL 下载。

我现在有两种方法:

  1. 使用 redirect() 将打开文件而不是下载文件;或
  2. 按照以下代码更改 header :

    header('Content-type: application/force-download');
    header('Content-Disposition: attachment; filename=' . $file_name);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 4000');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($generated_file));

    readfile($generated_file);

不幸的是,这两种方法都帮不了我。第二种方法导致下载来 self 的网站,而不是直接来自亚马逊。

如何强制文件直接从 Amazon S3 服务器下载,而不是从我的网站下载?

最佳答案

您只需在 S3 中为您的文件设置正确的标题,以强制浏览器下载而不是打开文件。设置这些:

Content-Disposition: attachment; filename=FILENAME.EXT
Content-Type: application/octet-stream

您需要在将文件上传到 S3 时进行设置。与 php SDK你会使用 create_object .

或者您可以在上传后使用 'change_content_type' 进行设置或通过 copying the file to itself在 S3 中并设置正确的 header 。

关于php - 强制从 s3 亚马逊服务器下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com