2015-10-05 3 views
2

Я использую этот модуль для загрузки файла на АмазонкуAWS файла загрузить более 5mb - nodejs

https://www.npmjs.com/package/streaming-s3, который работает хорошо, если файл меньше или равен 5 МБ.

Я попытался загрузить файл PDF размером 6 МБ. он показывает загрузку успешно, но когда я попытался открыть этот файл через aws.

это показывает Не удалось загрузить PDF документ

Когда я проверил размер на Аус он показывает 5 МБ.

Я использую следующий код для загрузки на AWS

var options = { 
     concurrentParts: 2, 
     waitTime: 20000, 
     retries: 2, 
     maxPartSize: 10 * 1024 * 1024 
    }; 
    //call stream function to upload the file to s3 
    var uploader = new streamingS3(fileReadStream, config.aws.accessKey, config.aws.secretKey, awsHeader, options); 
    //start uploading 
    uploader.begin();// important if callback not provided. 

    // handle these functions 
    uploader.on('data', function (bytesRead) { 
     console.log(bytesRead, ' bytes read.'); 
    }); 

    uploader.on('part', function (number) { 
     console.log('Part ', number, ' uploaded.'); 
    }); 

    // All parts uploaded, but upload not yet acknowledged. 
    uploader.on('uploaded', function (stats) { 
     console.log('Upload stats: ', stats); 
    }); 

    uploader.on('finished', function (response, stats) { 
     console.log(response); 
     logger.log('info', "UPLOAD ", response); 
     cb(null, response); 
    }); 

    uploader.on('error', function (err) { 
     console.log('Upload error: ', err); 
     logger.log('error', "UPLOAD Error: ", err); 
     cb(err); 
    }); 

который работает отлично подходит для менее чем 5 файлов МБ.

Любая идея? Есть ли какие-то настройки, которые мне нужно делать на AWS?

Благодаря

+0

Что вы получаете в консоли? почему вы изменили maxPartSize? – Mircea

+0

Загрузить Статистика: {downloadSpeed: 5242880000, uploadSpeed: 66365570, СкачатьВремя: 1, uploadTime: 79, размер: 5242880} Там нет ошибки –

+0

вы видите FINISHED сообщение? – Mircea

ответ

0

Это требуется функция для трубопроводов содержимого в S3 через многочастное API загрузки файлов, вы можете держать использование памяти низко, даже при работе на потоке, который ГБ. Этот поток позволяет избежать использования большой памяти путем потоковой передачи потока на S3 в 5 МБ частей, чтобы он всегда сохранял только 5 МБ данных потока за раз.

Проблема, с которой мы сталкиваемся здесь, состоит в том, что следующая часть не добавляет к потоку.

См эту ссылку для конца в конец детали https://www.npmjs.com/package/s3-upload-stream

вы также можете отслеживать ход загрузки, отлаживать проблему с помощью

/* Handle progress. Example details object: 
    { ETag: '"f9ef956c83756a80ad62f54ae5e7d34b"', 
    PartNumber: 5, 
    receivedSize: 29671068, 
    uploadedSize: 29671068 } 
*/ 
upload.on('part', function (details) { 
    console.log(details); 
}); 

Даже на полной загрузке файла сделано.

upload.on('uploaded', function (details) { 
    console.log(details); 
}); 
+0

Вы хотите использовать s3-upload-stream этот модуль? –

+0

попробуйте использовать его, я использовал его в прошлом, и он очень перспективный – Nishant

+0

кажется не работает для меня –

Смежные вопросы