1

Я пытаюсь написать S3 с Нокс, следующим кодом:Node.js и S3/Запись на s3 с Нокс

var knox = require('knox'); 

var client = knox.createClient({ 
    key: 'key' 
    , secret: 'pass' 
    , bucket: S3_BUCKET 
}); 

fs.stat("/opt/files/" + url, function(err, stats) { 
    if (stats != null && stats.size != 0){ 
      var req = client.put(url, { 
     'Content-Length': stats.size 
     }); 
     req.on('error' ,function (err){ 
      console.log(err); 
     }) 
     var readstr = fs.createReadStream("/opt/files/" + url); 
     readstr.pipe(req); 
     readstr.on('error', function (err){ 
      console.log(err); 
     }) 

Это дает мне следующее сообщение об ошибке для больших файлов (я проверяю файл с 900MB):

{ [Error: write ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'write' } 

сертификаты в порядке, я успешно войти в систему с помощью ключа ключа & секрет доступа к Amazon и других NPM-пакетов. В дополнение, мне удалось загрузить небольшие файлы с помощью Knox.

Я знаю, что это ошибка соединения, но я не понимаю, почему это происходит и как я могу ее решить.

+0

Вы пробовали решение mpu? –

+0

Вместо этого я использую другое решение - пакет S3, так как рекомендуется knox: https://www.npmjs.org/package/s3. Это дает мне решение для больших файлов. –

ответ

0

Возможно, вы столкнулись с лимитом «большого файла», который существует на стороне Амазонки.

В соответствии с их часто задаваемыми вопросами, для объектов размером более 100 МБ пользователи должны использовать «multipart upload».

Для этого можно использовать "know-mpu" модуль и ваш пример станет

var knox = require('knox'); 
var MultiPartUpload= require('knox-mpu'); 

var client = knox.createClient({ 
    key: 'key' 
    , secret: 'pass' 
    , bucket: S3_BUCKET 
}); 

var upload = new MultiPartUpload(
     { 
      client: client, 
      objectName: url, 
      file: '/opt/files' + url 
     }, 
     function(err, body) { 
      console.log(body); 
     } 
    ); 
0

Вы ничего с ответом не делает. Попробуйте добавить слушателя для события «ответ» по запросу, например

req.on('response', function(res){ 
    // ... 
}); 

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

  • Нет связанных вопросов^_^