2013-02-20 55 views
0

在我们的应用程序中,用户可以上传尺寸为1024 X 768(大约150 KB)的图像。
当用户下面的事情上载的图像发生:图像上传管理在php

1)上载临时目录
2)图像裁剪图像分成四个不同的尺寸。
3)上传原始图像及其在amazon s3服务器上的裁剪图像。

上述过程证明对于用户来说是耗时的。

使用xdebug进行分析后,似乎有90%的时间在亚马逊s3上传图片。 我使用以下方法给保存图像在Amazon S3的桶

public function saveInBucket($sourceLoc,$bucketName = '', $destinationLoc = '') {   
    if($bucketName <> '' && $destinationLoc <> '' && $sourceLoc <> '') { 
     $s3 = new AmazonS3(); 
     $response = $s3->create_object($bucketName.'.xyz.com',$destinationLoc, array(
              'contentType' => 'application/force-download', 
              'acl' => AmazonS3::ACL_PUBLIC, 
              'fileUpload' => $sourceLoc 
              ) 
             ); 

     if ((int) $response->isOK()) { 
      return TRUE; 
     } 

     $this->ErrorMessage = 'File upload operation failed,Please try again later'; 
     return FALSE; 
    } 
    return FALSE; 
}  

我也想过直接上传图像到Amazon S3的,但我不能这样做,因为我也有裁剪图像分割成4个不同大小
我如何加快或改进图像管理过程。

回答

1

这发生在我以前。你可以做的是:

当你调整你的形象,你必须转换为字符串。 我正在使用WideImage类。

例子:

$image = WideImage::load($_FILES["file"]['tmp_name']); 
    $resized = $image->resize(1024); 
    $data = $resized->asString('jpg'); 

然后当你在亚马逊上载,你必须用参数,而不是“文件上传”身体'。

例子:

$response = $s3->create_object($bucketName.'.xyz.com',$destinationLoc, array(
             'contentType' => 'application/force-download', 
             'acl' => AmazonS3::ACL_PUBLIC, 
             'body' => $data 
             ) 
            ); 

我希望帮助。