0

对于我来说,所有的工作都适合JavaScript的AWS-SDK,但我认为有些奇怪的东西阻止我上传我刚刚创建的存储桶中的文件。无法在亚马逊S3上上传文件

在这里你可以找到我的代码上传桶中的一个文件最近(或没有)创建:http://pastebin.com/X2x2TYzQ

控制台输出:

2013-07-09T11:28:16.428Z - trace: UPLOAD : UPLOAD_FILES 
2013-07-09T11:28:16.430Z - data: @FILES : [object Object] 
2013-07-09T11:28:16.430Z - data: @BUCKET_NAME : mllXkdjSi8736gdjUUEyhhsbkfliofuzbb00D9f 
2013-07-09T11:28:16.431Z - data: @RESPONSE_FORMAT : json 
2013-07-09T11:28:16.432Z - trace: UPLOADER : SEND_FILES_TO_AMAZON_S3 
2013-07-09T11:28:16.432Z - trace: UPLOADER : IS_BUCKET_CREATED 
2013-07-09T11:28:16.855Z - debug: Buckets=[Name=mllxkdjsi8736gdjuueyhhsbkfliofuzbb00d9f, CreationDate=Tue Jul 09 2013 11:16:01 GMT+0000 (UTC)], ID=08585ce13e82846e44f03248bc73f2bc80e847ed3a529f3d53d3723228ba6fd8, DisplayName=amazon, RequestId=61C098432063348A 
2013-07-09T11:28:16.857Z - info: bucket found 
2013-07-09T11:28:16.858Z - trace: UPLOADER : SEND_FILES 
2013-07-09T11:28:16.858Z - debug: size=4746, path=/tmp/db16391116623ebebc829db08ff8422e, [email protected], type=image/jpeg 
2013-07-09T11:28:16.859Z - trace: UPLOADER : SEND_FILE 

如果回调给我我显示错误的错误消息如time - error : MESSAGE_ERROR。如果没有错误,则显示响应数据time - debug : DATA。但10分钟后什么也没有出现。我正在使用图书馆的v1.3.2(最新的稳定版本)。

我也尝试改变SENDFILE功能就像这样(使用该question响应):

function sendFile(options, done) { 
    logger.trace('UPLOADER : SEND_FILE'); 

    s3.putObject(options) 
     .done(function (data) { 
      logger.debug(data); 

      done(); 
     }) 
     .fail(function (err) { 
      done(err); 
     }) 
     .send(); 
} 

但同样的事情不会显示任何消息。

有什么想法?

谢谢。

回答

0

问题在Google+上的某个人的帮助下解决。

线101至104我使用一个回调函数命名callback但我还没有定义此函数,而是一个名为done功能..

function sendFiles(object, done) { 
    logger.trace('UPLOADER : SEND_FILES'); 

    var urls = []; 

    async.eachSeries(
     object.data, 
     function (file, cb) { 
      logger.debug(file); 

      var file_name = random({length: 30}).toLowerCase(); 

      switch (file.type) { 
       case 'image/jpeg': 
        file_name += '.jpg'; 
        break; 
       default: 
        cb(new Error('Unknown image file type')); 
      } 

      var options = { 
       Bucket: object.bucket_name, 
       ACL: 'public-read', 
       Key: file_name, 
       ContentLength: file.size, 
       ContentType: file.type, 
       Body: fs.readFileSync(file.path) 
      }; 

      sendFile(
       options, 
       function (err) { 
        if (err) { 
         return cb(err); 
        } 

        urls.push(object.location + file_name); 

        cb(); 
       } 
      ); 
     }, 
     function (err) { 
      if (err) { 
       return callback(err); 
      } 

      callback(null, urls); 
     } 
    ); 
}