强制从 s3 亚马逊服务器下载
我一直在开发一个新的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开始下载。
我现在有两种方法可以做到这一点:
- 使用它将打开文件而不是下载它;或
redirect()
-
更改标头,如下所示代码:
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);
不幸的是,这两种方式都无济于事。第二种方法导致下载来自我的网站,而不是直接从亚马逊。
如何强制直接从 Amazon S3 服务器下载文件,而不是从我的网站下载文件?