gpt4 book ai didi

javascript - 使用 Fs 模块 : Error: write after end 在 NodeJs 中上传文档

转载 作者:搜寻专家 更新时间:2023-11-01 00:17:57 24 4
gpt4 key购买 nike

我一直在尝试使用以下代码上传文档。

我用谷歌搜索过,但目前还没有找到任何解决方案。

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 扔呃;//未处理的“错误”事件 ^

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)

最佳答案

找到解决方案。

var form = new app.npm.multiparty.Form();

这是在全局范围内定义的。对于每个新请求,我应该创建一个新的表单实例,因为在上一次调用中流已关闭,所以我应该通过获取最新内容来创建一个新实例。

解决方案看起来像:

app.post('/documents', function (req, res) {

var document = {};

var form = new app.npm.multiparty.Form();

var fstream = null;

...

其他都是一样的

关于javascript - 使用 Fs 模块 : Error: write after end 在 NodeJs 中上传文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29846199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com