2012-01-10 43 views
1

我有亞馬遜S3服務和一個web服務用php編寫的問題。 這個WS從$ _POST接收一個base64編碼的文件。我需要把這個「字符串」保存到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); 

感謝

回答

1

the docsfileUpload需要一個URL或路徑,或fopen資源。

fileUpload - string|resource - 必填;有條件的 - 要上傳文件的URL /路徑或打開的資源。此參數或body是必需的。

你應該通過body參數,而不是通過解碼文件數據:

body - string - 必需的;有條件的 - 要存儲在對象中的數據。必須指定此參數或fileUpload

+0

謝謝!但我需要了.. 現在我存儲該文件(有時它是一個圖像),但如果我打開它在瀏覽器上告訴我,該文件已損壞。 有什麼建議嗎? – Matte 2012-01-11 08:48:32

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); 
     }