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