我有亚马逊s3服务和用PHP写的网络服务的问题。 这个WS从$ _POST接收一个base64encoded文件。我需要把这个“字符串”保存到Amazon S3存储桶。 我找不到合适的解决办法,经过一周的工作,我在这里寻求帮助。
//$file = 'kdK9IWUAAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd'
$file = $_POST['some_file'];
$opt = array(
'fileUpload' => base64_decode($file),
'acl' => AmazonS3::ACL_PUBLIC
);
$s3 = new AmazonS3(AWS_KEY, AWS_SECRET_KEY);
$response = $s3->create_object($bucket, $filename, $opt);
谢谢
答案 0 :(得分:1)
根据the docs,fileUpload
需要网址或路径或fopen
资源。
fileUpload
-string|resource
- 必填;条件 - 要上载的文件的URL /路径,或打开的资源。此参数或body
是必需的。
您应该通过body
参数传递已解码的文件数据:
body
-string
- 必填;条件 - 要存储在对象中的数据。必须指定此参数或fileUpload
。
答案 1 :(得分:0)
imagestring是从POST数据传递的base64编码字符串。您可以对此图像进行编码并将文件制作到任何地方 - 在我的情况下/照片。我用的是学校服务器,但如果亚马逊服务器足够相似,它也可以在那里工作。
$values = array();
foreach($_POST as $k => $v){
$values[$k] = $v;
}
$imagestring = $values['stringEncodedImage'];
$img = imagecreatefromstring(base64_decode($imagestring));
if($img != false)
{
echo 'making the file!';
imagejpeg($img, 'photos/'.$file_name);
}