通过流式传输AWS SDK PHP 2文件的内容来上传对象

时间:2013-06-11 19:34:25

标签: php upload amazon-s3

我是亚马逊s3的新手。我将zip下载到我的项目中并解压缩。 Bucket已经创建了'bucketToUpload'。我上传文件的代码是

require 'aws/aws-autoloader.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
use Aws\S3\Enum\CannedAcl;


$bucket = 'bucketToUpload';
$pathToFile = getcwd().'/s3_upload_file.doc';

if(file_exists($pathToFile)) {

    try  {
        $client = S3Client::factory(array(
            'key'    => 'MYKEY',
            'secret' => 'MYSECRETKEY',
            'region' => 'us-west-1'
        ));

        $client->waitUntilBucketExists(array('Bucket' => $bucket)); 


        $result = $client->putObject(array(
                'Bucket'     => $bucket,
                'Key'        => 's3_upload_file.doc',
                'SourceFile' => getcwd(),
                'ACL'        => CannedAcl::PRIVATE_ACCESS,
                'Metadata'   => array(
                        'Foo' => 'abc',
                        'Baz' => '123'
                    )
                ));
      } catch (S3Exception $e) {
           echo "The file was not uploaded: " . $e->getMessage();
      }
    var_dump($result);      
}

我收到Fatel错误:超过15秒的最长执行时间。 真的不知道我做错了什么。任何帮助都可能非常明显。

由于

1 个答案:

答案 0 :(得分:1)

我看到了一些你可能需要做的事情。

首先,您正在指定

'SourceFile' => getcwd(),

当我认为你可能打算做的时候

'SourceFile' => $pathToFile,

第二次,你正在做var_dump($result);,这可能不会告诉你你期望看到什么。请尝试使用var_dump($result->toArray());,但请务必查看user guide page about response models以获取有关使用结果的更多信息。

第三次,您看到的错误Fatal error: Maximum execution time of 15 seconds exceeded与PHP的max_execution_time INI设置有关。如果需要,您应该增加该限制。您也可以在一个过程中使用set_time_limit function

我希望有所帮助!