亚马逊aws s3内容标题

时间:2015-10-15 12:48:54

标签: php amazon-web-services amazon-s3

我正在尝试在amazon aws s3中创建目录,因为我正在尝试使用以下代码(我正在使用v3 php sdk)

$bucketName = 'somebucketName';
$key = 'folderName';

$params = [
    'Bucket' => $bucketName,
    'Key' => $key . '/'
  ];
$s3->putObject($params);

$ s3是$s3 = new Aws\S3\S3Client类的实例,我正在使用当前配置成功获取存储桶和对象。

以前工作正常,但现在我收到了错误

  

致命错误:未捕获异常'Aws \ S3 \ Exception \ S3Exception',消息'错误执行“PutObject”on“https://s3-us-west-2.amazonaws.com/sdfsdf/demoer/”;

     

AWS HTTP错误:客户端错误:411 MissingContentLength(客户端):您必须提供Content-Length HTTP标头。

2 个答案:

答案 0 :(得分:2)

此错误是由于您没有传递任何图像或对象。也传递一个对象。 我也遇到过类似的问题https://stackoverflow.com/questions/32117596/aws-s3-uploaded-images-are-getting-corrupted  请检查以下代码。

  try {
    $result = $s3->putObject(array(
       'Bucket' => $bucketName,
       'Key' =>  $key . '/',
       'SourceFile' => $filepath, // file path which is putting on AWS S3, Path should be absolute path like $filepath = "/var/www/html/for_testing_aws/assets/img/avtar.png";
       'ContentType' => mime_content_type($filepath),
   ));
} catch (S3Exception $e) {
   echo $e->getMessage() . "\n";
}

了解更多信息AWS putObject

答案 1 :(得分:1)

问题很简单,Amazon S3实际上没有目录。

现实情况是,对象路径中的斜杠会创建目录的外观(并且AWS Console界面允许您进行交互,就像对象在目录中一样)。

所以,要创建一个目录,你必须上传一个对象,在Git中没有目录,所以用户经常创建一个名为.gitkeep的文件来“保存”一个不应该包含任何文件的目录承诺。如果你真的不想推送实际文件,你可以做类似的事情。