通过Django和Boto3上传到AWS S3存储桶时,图像文件被切断

时间:2016-07-30 21:17:08

标签: django amazon-s3 boto boto3

当我将较大的图像(3 + MB)上传到AWS S3存储桶时,只有部分图像被保存到存储桶中(大约占图像的前10%,其余部分显示为灰色空间)。这些图像始终显示256 KB大小。小文件没有任何问题。

这是我的代码:

s3 = boto3.resource(' s3') s3.Bucket(settings.AWS_MEDIA_BUCKET_NAME).put_object(Key = fname,Body = data)

...其中数据是图像文件的二进制数据。

当文件较小时没有问题,而在S3存储桶中,较大的文件都显示为256 KB。

我还没有找到任何关于这可能发生的原因的文档。有人可以指出我错过了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,花了我几个小时才弄清楚。我终于通过创建流来解决它。这是我的代码:

const uploadFile = (filePath) => {
  let fileName = filePath;
  fs.readFile(fileName, (err, data) => {

  let body= fs.createReadStream(filePath);

   if (err) throw err;
   const params = {
      Bucket: 'bucketname', // pass your bucket name
      Key: fileName; 
      Body: body,
      ContentType: 'image/jpeg',
      ContentEncoding: 'base64',
   };
   s3.upload(params, function(s3Err, data) {
       if (s3Err) throw s3Err;
       console.log(`File uploaded successfully at ${data.Location}`);
       });
    });
};