来自$ _POST和Amazon S3的文件

时间:2012-01-10 20:16:37

标签: php amazon-s3

我有亚马逊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);

谢谢

2 个答案:

答案 0 :(得分:1)

根据the docsfileUpload需要网址或路径或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);
        }