【发布时间】:2014-12-28 20:53:28
【问题描述】:
已解决:使用此帖子:http://www.designedbyaturtle.co.uk/2013/direct-upload-to-s3-with-a-little-help-from-jquery/
编辑:我正在寻找一种方法,无需先将大 zip 文件从客户端上传到 amazon s3,而无需先将其上传到我的服务器
我正在为我的 web 应用程序使用一个小型服务器和 laravel 框架 我有一些用户试图将大文件上传到我的服务器(大约 300-400m),我的服务器很弱,我的带宽太低,用户无法完成上传。
我希望将文件直接上传到 amazon s3, 通过浏览,我认为这不能与亚马逊的 laravel sdk 一起使用
我安装了官方sdk 我正在尝试按照这篇文章中的建议进行操作 uploading posted file to amazon s3
但不确定如何将我的文件实际发送到亚马逊 s3, 我应该在“你的文件字符串”中放什么:
$result = $client->upload(
'BUCKET HERE',
'OBJECT KEY HERE',
'STRING OF YOUR FILE HERE',
'public-read' // public access ACL
);
我像这样得到我的文件:
$myFile = Input::file('file');
将 $myfile 而不是“您的文件字符串”放在此处不起作用
【问题讨论】:
-
你试过
$myFile->getRealPath() -
我实际上将 $myfile 作为数组获取,因为它可能是多个文件上传,但无论如何,$myFile[0]->getRealPath 的值为 bool(false),我认为这不是它假设有,并尝试发送它会给出无效的资源类型。我尝试手动在我的服务器上放置文件的路径,但它不起作用,只需在 s3 上放置一个以路径作为内容的文件
-
getRealPath()工作不正常很奇怪。无论如何。尝试使用file_get_contents('path-to-your-file')作为文件字符串 -
好吧,它适用于常规的 txt 文件,但它不能帮助我发送上传的文件而不先将其上传到我的服务器。加上我上传的文件是一个 zip 文件,所以 file_get_contents 不起作用
-
上传的文件 (
Input::file()) 已经上传到您的服务器。它作为临时文件存储在某处。只需获取该文件路径,然后获取其内容即可。