gpt4 book ai didi

Node.js 文件上传不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:46 25 4
gpt4 key购买 nike

我正在使用 node.js 构建一个 super 简单的文件服务器。

我正在使用 dotcloud 托管我的服务器,即 accessible here.

当我尝试上传文件(使用正确的密码)时,我的代码返回“错误,密码不正确!”。看一下下面的代码,我将解释原因:

var success = false;
var form = new formidable.IncomingForm();
form.parse(req, function(err,fields, files) {
console.log("Password: " + fields.password);
if(fields.password!="poop") {
return;
}
fs.rename(files.upload.path, files.upload.name, function (err) { });
success = true;
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end();
});
req.on('end', function() {
// empty 200 OK response for now
if(success) {
res.writeHead(302, { 'location': '/' });
} else {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('Error, incorrect password!\n');
}
res.end();
});

我认为我的代码在“fs.rename(files.....)”处失败,因为成功变量未设置为 true。我的代码可以在本地安装的 Node.js 上运行,我是否需要向 dotcloud 或其他东西请求写入权限?

最佳答案

我相信 HTTP 请求的 end 事件是在 formidable 解析表单之前发出的。

Node.js 文档中没有定义事件调度的确切顺序;因此,根据 Node.js 版本和/或平台,它们最终可能会以不同的顺序进行处理。

在这种情况下,如果发生这种情况,success 则为 false,您甚至在实际解析表单之前就发送了回复。

也许您应该在表单解析函数中处理错误?

关于Node.js 文件上传不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490324/

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