Node.js 344错误发送后无法设置标题
问题描述:
试图围绕我得到的这个错误,我不明白为什么。我看到了几个帖子,但他们都是不同的情况,没有一个与我的相匹配。所以感谢帮助。 我想上传多个文件上传。 但我做文件上传它只是一个工作。 但是当我尝试上传多个文件时,它不起作用 你能给我一个答案吗?Node.js 344错误发送后无法设置标题
router.post('/contents/insert/upload', ensureAuthenticated, function(req, res, next) {
\t
\t var form = new formidable.IncomingForm();
\t
\t form.parse(req);
// \t form.on("fileBegin", function (name, file){
// \t \t console.log('upload come on3');
// \t \t
// });
form.on("file", function (name, file){
fs.readFile(file.path, function(error, data){
\t var filePath = __dirname + '/../public/uploads/' + file.name;
\t
\t fs.writeFile(filePath, data, function(error){
\t \t if(error){
\t \t \t throw err;
\t \t \t //res.redirect('back');
\t \t }else {
\t \t \t res.redirect('back');
\t \t }
\t });
});
});
});
<form action="/adm/contents/insert/upload" method="post" enctype="multipart/form-data" >
\t \t \t <!-- <input type="file" name="file" />
\t \t \t <input type="submit" /> -->
\t \t \t \t <div class="file-field input-field">
\t \t \t \t <div class="btn">
\t \t \t \t \t \t <span>input images</span>
\t \t \t \t \t <input type="file" name="file" multiple>
\t \t \t \t </div>
\t \t \t \t <div class="file-path-wrapper">
\t \t \t \t <input class="file-path validate" type="text">
\t \t \t \t </div>
\t \t \t </div>
\t \t \t <input type="submit" class="btn waves-effect waves-light" value="upload" />
\t \t \t </form>
答
的file
将触发事件在上传的每个文件,所以最终代码会发出res.redirect()
每个上传的文件。这将导致错误(您只能发出重定向,或发送回应,在请求的生命周期中只发送一次)。
相反,你要听的end
事件,并出具有重定向:
form.on("file", function (name, file) {
...handle the file copy here, but don't call `res.redirect()` anywhere...
});
form.on("end", function() {
res.redirect('back');
});
FWIW,在我看来,你要设置的厉害的uploadDir
选项,或使用fs.rename()
,而不是在上传后读取文件并将其写入新的位置(这不是非常有效)。
我添加代码}否则{ \t \t \t form.on( “结束”,函数(){ \t \t \t \t res.redirect( '返回'); \t \t \t \t}); \t \t}你写的是什么。非常感谢。但我不知道为什么浏览器正在继续加载......即使插入了 –
您不应该在同一级别添加'end'处理程序_inside_''''处理程序。我会编辑我的答案来澄清。 – robertklep
非常感谢!它的工作澄清!选择了你的答案 –