2015-10-21 2 views
3

Я пытаюсь создать и отправить почтовый файл клиенту. Я знаю, как его создать, но у меня проблема с отправкой его клиенту. Я пробовал много способов. Я отправляю запрос POST от клиента и в качестве ответа хочу отправить файл. Это мой сервер-сайт пример кодаСоздание и отправка почтового файла -NODE JS

var Zip = require('node-zip'); 
router.post('/generator', function(req, res, next) { 
    var zip = new Zip; 

    zip.file('hello.txt', 'Hello, World!'); 
    var options = {base64: false, compression:'DEFLATE'}; 
    fs.writeFile('test1.zip', zip.generate(options), 'binary', function (error) { 
     console.log('wrote test1.zip', error); 
    }); 
    res.setHeader('Content-disposition', 'attachment; filename=test1.zip'); 
    res.download('test1.zip'); 

} 

}); я пытался что-то вроде этого:

res.setHeader('Content-disposition', 'attachment; filename=' + filename); 
    res.setHeader('Content-type', mimetype); 

    var filestream = fs.createReadStream(file); 
    filestream.pipe(res); 

Я пытался использовать такие библиотеки, как:

  1. узла-молнии

  2. архиватор

Может кто-нибудь объяснить мне, как это сделать ?

ответ

2

Я раньше не работал с узлом-zip или архиватором (обычно я использую встроенный модуль zlib), но я сразу заметил, что вы должны разместить res.download внутри обратного вызова writeFile. Таким образом, он будет отправлять файл только после полной записи на диск.

fs.writeFile('test1.zip', zip.generate(options), 'binary', function (error) { 
    res.download('test1.zip'); 
}); 

Я надеюсь, что это решение будет работать для вас, если оно не смело комментировать.

Кроме того, я думаю, что res.download устанавливает для вас заголовок Content-disposition, вам не нужно его устанавливать вручную. Не на 100% уверены в этом.

+0

It dosent work. Я сделал то, что написал. Но в качестве ответа я получил некоторый тупой текст в выводах консоли браузера. – PtDf

+0

Вы проверили файл 'test1.zip', чтобы узнать, содержит ли он то, что вы хотите, чтобы он содержал? – Wouter

+0

Да, он содержит hello.txt. В выводе консоли браузера я могу видеть hello.txt и некоторый немой текст. Я пытаюсь сделать это локально, это может иметь какое-то влияние? – PtDf

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