我在 S3 中的图像不显示。怎么了?

My Image in S3 Not Show. What's Wrong?

我已经使用以下代码将图像从我的节点 js web 上传到 S3:

router.post('/uploadtest', multipartMiddleware, function(req, res, next) {

  var file = req.files.file;

   var data = {Key: file.originalFilename, Body: file.path, ContentType: file.type, ACL: 'public-read'};

    s3Bucket.putObject(data, function(err, data) { 
      if (err) 
        { console.log('Failed!'); 
            res.redirect("/lookpic?url=null");
        } else { 
          console.log('Success!'); 
          var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename
          res.redirect("/lookpic?url="+urls);
        } 
    });
});

成功了,我的图像存储到我的 S3 存储桶中,但是当我单击 link 查看我的图像时,结果如下: http://i.stack.imgur.com/qAM5N.png

我的步骤有什么问题?

您只是在 body 属性中指定了文件路径,而文件数据应该在 body 属性中提供。试试这个:

var fs = require('fs');
router.post('/uploadtest', multipartMiddleware, function(req, res, next) {

    var file = req.files.file;
    var file_data = fs.readFileSynch(file.path);
    var data = {Key: file.originalFilename, Body: file_data, ContentType: file.type, ACL: 'public-read'};

    s3Bucket.putObject(data, function(err, data) { 
        if (err) 
          { console.log('Failed!'); 
          res.redirect("/lookpic?url=null");
        } else { 
          console.log('Success!'); 

          // remove the uploaded file if you want to
          fs.unlink(file.path, function(err) {
              if (err) throw err;
          });
         //

          var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename
          res.redirect("/lookpic?url="+urls);
        } 
    });
});

使用fs模块同步读取待上传文件。检查此 link:https://nodejs.org/api/fs.html