0

使用适用于 JavaScript 的 AWS-SDK 对我来说一切正常,但我认为有些奇怪的东西阻止我在刚刚创建的存储桶中上传文件。

在这里您可以找到我在最近(或未)创建的存储桶中上传文件的代码: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, name=Icon@2x.jpg, 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 函数(使用该问题的响应):

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

但同样的事情没有显示消息。

任何想法 ?

谢谢你。

4

1 回答 1

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);
        }
    );
}
于 2013-07-10T19:56:04.367 回答