我目前正在爲我的網站編寫一個後端頁面,以允許管理員間接編輯數據庫條目並上傳照片。我使用Amazon S3來託管圖像以便加載速度更快,因此,當我上傳圖像時,我必須先將它們上傳到服務器,然後從那裏將它們發送到亞馬遜服務器。圖像正確地上傳到服務器,但他們沒有正確地進入亞馬遜的服務器。當我嘗試訪問亞馬遜副本時,它似乎不存在。這裏是我用來上傳圖片的代碼:亞馬遜S3圖像無法正確上傳
//Set up image validator
$upload = new Zend_File_Transfer();
$upload->addValidator('ImageSize', false, array('minwidth' => 100,
'maxwidth' => 1000,
'minheight' => 100,
'maxheight' => 1000), 'image')
->addValidator('Extension', false, 'jpg')
->addValidator('Count', false, array('min'=>0, 'max'=>2));
//Set up Amazon class
$s3 = new Zend_Service_Amazon_S3($my_aws_key, $my_aws_secret_key);
if($upload->isUploaded('image')){ //Pic was uploaded
if($upload->isValid('image')){ //Pic is valid
echo "Pic provided is valid.";
$upload->addFilter('Rename',array('target'=>BASE_PATH . "/public_html/items/{$item_id}_nsa.jpg",'overwrite'=>true));
$upload->receive();
$pic = BASE_PATH . "/public_html/items/{$item_id}_nsa.jpg";
try{
$s3->putObject("media.completeset.com/images/items/{$item_id}_nsa.jpg", $pic,
array(Zend_Service_Amazon_S3::S3_ACL_HEADER => Zend_Service_Amazon_S3::S3_ACL_PUBLIC_READ,
Zend_Service_Amazon_S3::S3_CONTENT_TYPE_HEADER => "image/jpeg"));
echo "Pic is uploaded.";
}
catch(Exception $e){
echo "Exception: ".$e->getMessage();
}
}
else{
echo "Pic is invalid.";
}
}
else{
echo "Pic isn't uploaded";
}
我的錯誤的例子。 The local working copy和the Amazon copy.我從來沒有和亞馬遜合作過,所以我不知道問題是什麼,如何弄清楚它是什麼,或者如何解決它。任何這3點的幫助將不勝感激。
如果,你的'putObject'電話之後,你可以調用像'回聲$ S3->的getObject(「media.completeset.com/images/items/{$ ITEM_ID } _nsa.jpg「);'? – Viccari 2012-07-18 19:59:50