【问题标题】:NodeJS: Uploading PDF to S3 via Knox; putFile returns 505NodeJS:通过 Knox 将 PDF 上传到 S3; putFile 返回 505
【发布时间】:2013-05-03 19:51:07
【问题描述】:

我正在尝试使用 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 响应。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 您好 Vikas,感谢您的帮助。 Knox.createClient 从我在上面模拟的 config.js 文件中读取密钥、秘密和存储桶。至于第二个,我已经避开了所有可能的麻烦字符,包括空格。当我有机会时,我将深入研究 Knox 问题,但现在我已经发布了有效的 AWS-SDK 代码,以防其他人遇到我遇到的问题。
    【解决方案2】:

    这本身不是一个答案,我仍然不确定上面的 505 响应,但如果有人遇到与 Knox 类似的问题,亚马逊推出的 AWS 开发工具包非常有用。以上就变成了:

    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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 2018-12-30
      • 2019-02-14
      • 2012-06-12
      • 2016-03-19
      相关资源
      最近更新 更多