首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >readfile()的替代方法

readfile()的替代方法
EN

Stack Overflow用户
提问于 2013-02-21 23:45:53
回答 1查看 1.8K关注 0票数 2

我目前正在使用以下代码从我的亚马逊S3帐户下载文件。

代码语言:javascript
复制
if(isset($_POST['file_name'])) {
$bucket = $_POST['bucket'];
$fname = $_POST['file_name'];
$accessKey = 'AKIAIEHFBME6F5Q62FTQ';
$secretKey = '<REMOVED>';
$file_type = pathinfo($fname, PATHINFO_EXTENSION);

$mp3_url = el_s3_getTemporaryMP3Link($accessKey, $secretKey, $bucket, $fname);    
$zip_url = el_s3_getTemporaryZipLink($accessKey, $secretKey, $bucket, $fname);


if ($file_type === "mp3") {
    header('Content-type: audio/mpeg3');
    header('Content-Disposition: attachment; filename="themixtapesite_'.$fname.'"');
    readfile($mp3_url);
    exit();
} else if ($file_type === "zip") {
    header('Content-type: application/zip');
    header('Content-Disposition: attachment; filename="themixtapesite_'.$fname.'"');
    readfile($zip_url);
    exit();
} else {
    echo "Sorry, File does not exist";
}

}

正如您所看到的,它检查文件扩展名是什么,然后将相关的url传递给read file()

我使用S3的全部目的是为了减轻我的EC2服务器的负载。然而,它似乎使用这种方法来下载文件,它通过EC2服务器从S3拉取文件(通过iStat监控服务器加载显示下载文件时的活动增加)。

有没有其他方法可以直接从S3而不是通过EC2服务器下载文件?

更新:只是一个快速更新--我使用的是Nginx而不是阿帕奇,所以如果有人想这么做的话就没有.htaccess了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 01:54:53

如果您有一个可公开访问的url或带签名的url。您可以使用位置重定向将其直接传递给客户端。

header('Location: ' . $myUrl);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15006380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档