2014-10-16 2 views
3

У меня есть настольное приложение, использующее webkit узла, и мне нужно загрузить большие файлы с узла на другой сервер. Он должен иметь возможность блокировать файлы на сервере, так как существует ограничение размера запроса, которое предотвращает потоковое воспроизведение всего файла. В настоящее время я использую модуль запроса для отправки сообщений без chunking, который отлично подходит для небольших файлов, но я не могу найти примеров того, как вы будете выполнять пакетные загрузки с узла. Ниже приводится то, что у меня есть на данный момент:Загрузка больших файлов с nodejs на другой сервер

var form = request.post('http://server.com/Document/Upload', 
    {contentType: 'multipart/form-data; boundary="' + boundaryKey + '"', preambleCRLF: true, postambleCRLF: true}, 
    function(err, res, body) { 
     console.log(res); 
    }).form(); 

form.append('uploadId', myUploadId); 
form.append('file', fs.createReadStream(zipFileFullPath), {filename: 'test.zip'}); 

Любая идея, как я мог бы выполнить это в узле? Я видел множество примеров получения фрагментированных загрузок на узловом сервере, но, похоже, не может найти ничего о том, как отправлять их с узла.

+0

Что не так с кодом вы показали? – mscdex

+0

Проблема заключается в том, что он не блокирует файлы, поэтому, когда я отправляю файл, который превышает размер максимальной длины запроса на сервере, он терпит неудачу. – dwilliams

+0

Если это так, как вы ожидали «chunk» файла? Несколько запросов как-то? – mscdex

ответ

1

Заканчивать документацию для request он показывает, как поставить Chunked вариант:

request({ 
    method: 'PUT', 
    preambleCRLF: true, 
    postambleCRLF: true, 
    uri: 'http://service.com/upload', 
    multipart: [ 
     { 
     'content-type': 'application/json' 
     body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) 
     }, 
     { body: 'I am an attachment' }, 
     { body: fs.createReadStream('image.png') } 
    ], 
    // alternatively pass an object containing additional options 
    multipart: { 
     chunked: false, 
     data: [ 
     { 
      'content-type': 'application/json', 
      body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) 
     }, 
     { body: 'I am an attachment' } 
     ] 
    } 
    }, 
    function (error, response, body) { 
    if (error) { 
     return console.error('upload failed:', error); 
    } 
    console.log('Upload successful! Server responded with:', body); 
    }) 
Смежные вопросы