当链接被点击时,我需要强制文件下载。原始URL看起来像这样:
http://www.our-web.com/download/do/1.jpg
它会生成一个临时签名URL到Amazon S3服务器上的实际文件,像这样:
http://main_bucket.s3.amazonaws.com/post/1/1.jpg?AWSAccessKeyId=AKIAJEOQKYPKC3CCU5RA&Expires=1305395426&Signature=iuzCdA22gImLK192%2BMAhk8OkAY8%3D
我需要使文件在用户点击链接后从真实的Amazon URL开始下载。
我现在有两种方法可以做到这一点:
1. 使用redirect(),这将打开文件而不是下载;或者 2. 修改标题,如下所示的代码:
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);
不幸的是,这两种方法都没有帮助我。第二种方法会导致下载文件来自我的网站,而不是直接从亚马逊下载。
我该如何强制文件直接从亚马逊S3服务器下载,而不是从我的网站下载?
readfile
在做什么。 - Lasar