NodeJS:通过Knox将PDF上传到S3; putFile返回505

时间:2013-05-03 19:51:08

标签: node.js file-upload amazon-s3 knox-amazon-s3-client

我正在尝试使用Knox库将PDF上传到S3存储桶,但我不断收到505错误,PDF也无法保存。我的代码:

// all of this works well
var knox = require('knox');
var client = knox.createClient(require('../path/to/config.js').knox);

client.putFile('tmp/file', '/prefix/key',
  function(err, res) {
    if (err) {
      console.log("Error PUTing file in S3:", err);
    }

    console.log("S3 RESPONSE:", res.statusCode); // returns 505
  }
);

任何人都对我做错了什么有所了解?我也尝试使用client.put(..)设置我自己的头文件,但我得到了相同的505响应。

2 个答案:

答案 0 :(得分:0)

2可能的原因。 1)如果这是您的完整代码,那么您忘记输入密钥,密码和存储桶。

   var client = knox.createClient({
   key: '<api-key-here>'
    , secret: '<secret-here>'
   , bucket: 'learnboost'
   });

2)您尝试上传的文件名中有一个空格。

答案 1 :(得分:0)

这本身并不是一个答案,我仍然不确定上面的505响应,但如果有人与Knox有类似的问题,亚马逊发布的AWS SDK非常有用。以上就是:

var aws = require('aws-sdk');
aws.config.loadFromPath('./path/to/config.json');
var s3 = new aws.S3();

var params = { Bucket: 'your-bucket', 
               Key: 'your-key', 
               Body: fs.readFileSync('/path/to/file.pdf') };

s3.putObject(params, function(err, data) {
  if (err) {
    console.log("Error PUTing file:", err);
  }
  console.log("S3 RESPONSE:", data);
});