Я пытаюсь загрузить документ, используя следующий код.Загрузка документа в NodeJs с использованием модуля Fs: Ошибка: запись после конца
Я искал googled и еще не нашел решение.
app.post('/documents', function (req, res) {
var document = {};
var fstream = null;
// populate fields
form.on("field", function (name, value) {
document[name] = value ;
});
form.on("part", function (part) {
if (!part.filename) {
return;
}
var path = __dirname + '/files/' + part.filename;
fstream = app.npm.fs.createWriteStream(path);
document.type = part.headers["content-type"]
document.name = part.filename;
document.size = part.byteCount;
document.path = path;
fstream.on("close", function() {
db.sequelize.models.Document.create(document).then(function (newDocument) {
res.send(newDocument)
res.end();
},
function (error) {
res.send(error);
});
});
part.pipe(fstream);
});
form.on("close", function (data) {
fstream.end();
fstream = null;
});
form.parse(req);
});
ПРИМЕЧАНИЕ: Я использую модуль fs. https://nodejs.org/api/fs.html
Первое изображение работает нормально. но когда я пытаюсь загрузить другое изображение, оно выдает исключение:
events.js: 72 throw er; // необработанное 'ошибка' событие ^
Error: write after end at writeAfterEnd (_stream_writable.js:132:12) at Form.Writable.write (_stream_writable.js:180:5) at write (_stream_readable.js:601:24) at flow (_stream_readable.js:610:7) at IncomingMessage.pipeOnReadable (_stream_readable.js:642:5) at IncomingMessage.emit (events.js:92:17) at emitReadable_ (_stream_readable.js:426:10) at emitReadable (_stream_readable.js:422:5) at readableAddChunk (_stream_readable.js:165:9) at IncomingMessage.Readable.push (_stream_readable.js:127:10)
Пожалуйста, не используйте 'eval()' like this ([читайте здесь почему нет] (http://blog.gdssecurity.com/labs/2015/4/15/nodejs-server-side-javascript-injection- detect-exploitati.html)) – robertklep
@robertklep полностью согласен! будет дальнейший рефакторинг на этом .... однако я не мог найти другого способа установить поток с несколькими частями с данными формы. – codebased
'document [name] = value'? – robertklep