已解决:使用此帖子:http://www.designedbyaturtle.co.uk/2013/direct-upload-to-s3-with-a-little-help-from-jquery/
编辑:我正在寻找一种方法直接将大型zip文件从客户端上传到亚马逊s3,而无需先将其上传到我的服务器
我使用laravel框架为我的Web应用程序使用小型服务器 我有一些用户试图将大文件上传到我的服务器(大约300-400米),我的服务器很弱,我的带宽很低,用户无法完成上传。
我希望将文件直接上传到amazon s3, 从浏览周围我不认为这可以是laravel sdk亚马逊
我安装了官方的sdk 而且我试着按照这篇文章的建议去做 uploading posted file to amazon s3
但不能确定如何将我的文件实际发送到亚马逊s3, 我该怎么把你文件的'字符串的instad放在这里':
$result = $client->upload(
'BUCKET HERE',
'OBJECT KEY HERE',
'STRING OF YOUR FILE HERE',
'public-read' // public access ACL
);
我的文件是这样的:
$myFile = Input::file('file');
在此处输入$ myfile而不是您文件的'字符串'不起作用
答案 0 :(得分:3)
我使用这篇文章解决了问题:已解决:使用这篇文章:http://www.designedbyaturtle.co.uk/2013/direct-upload-to-s3-with-a-little-help-from-jquery/
答案 1 :(得分:1)
您可以直接从客户端将文件上传到S3,但由于您无法验证文件,因此存在安全风险,而且任何人都可以访问您的S3存储桶通常是一个坏主意。我仍然会看看你的Laravel应用程序上传。
上传到PHP的所有文件都存储在您的服务器上,很可能存储在Linux和Mac计算机的/tmp
目录中。没有办法避免这种情况,文件需要存储在某个地方。您使用Input::file('file')
获取表示文件的对象。
该文件是Symfony\Component\HttpFoundation\File\UploadedFile
的一个实例,它公开了getRealPath()
方法。然后我们可以使用fopen()
以字符串形式读取文件的内容。因此,要将其上传到S3,请使用:
$client->upload(
'bucket',
'key',
fopen($file->getRealPath(), 'r'),
'public-read',
);