如何在yii框架中存储S3中的图像

时间:2015-03-18 11:21:50

标签: php file-upload amazon-web-services yii amazon-s3

我正在使用yii框架,我试图在S3上传图像。

使用CUploadedFile将文件存储在本地服务器中。我需要在亚马逊发送新图像,因为服务器已满。

图像被发送到s3服务器但它们已损坏且无法打开。

ArticleControllers.php

public function actionCreate() {
  $model = new Article();
  if(isset($_POST['Article']) {
    $model->attributes = $_POST['Article']
    $model->image = CUploadedFile::getInstance($model, 'image');
    $image = new Image();
    $uploadSuccess = $image->insertNewPicture($model->image);
    if ($uploadSuccess)
      $model->save();
  }
}

Image.php

public function insertNewPicture($image) {
  if (empty($image))
    return false;

  $s3Client = S3Client::factory(Yii::app()->params['s3']);
  try {
     $success = $s3Client->upload('my_bucket', 
     'test.png', fopen($image->getTempName(), 'rb'),
    'public-read');
    } catch (Exception $e) {
        return false;
    }
    if (!$success)
        return false;
   return $this->save();
}

我也尝试过file_get_contents($ image-> getTempName()),但我不知道出了什么问题....

0 个答案:

没有答案