其实我遇到了两个问题
首先,如何更改上传路径
我的文件夹结构是这样的:
|__app.js |__upload
我的节点代码在app.js中并从中启动,
所以我想将上传图片上传到上传文件夹,我改变路径:
var form = new formidable.IncomingForm; form.uploadDir = "./upload";
它似乎上传成功,但我不知道文件去哪里,
它不在上传文件夹中.
那么正确的路径名称是什么?
第二个问题是
如果我不更改它,它可以正确上传到C:/ Users / ADMINI~1 / AppData / Local / Temp
但它将在没有foramt的情况下重命名,
那么如何才能获得上传格式并自行重命名?
第三个问题是
我还将处理程序绑定到进程事件,
喜欢
form.on('progress',function(bytesReceived,bytesExpected) { console.log(bytesReceived + ' ' + bytesExpected); });
但似乎不起作用,上传日志时没什么.为什么?我错过了什么吗?
这是我的所有代码:
app.post('/upload',function (req,res) { var form = new formidable.IncomingForm; // form.uploadDir = "./upload"; console.log(form.uploadDir); form.parse(req,function(err,fields,files){ if (err) return res.end('You found error'); console.log(files.image); }); form.on('progress',bytesExpected) { console.log(bytesReceived + ' ' + bytesExpected); }); form.on('error',function(err) { res.writeHead(200,{'content-type': 'text/plain'}); res.end('error:\n\n'+util.inspect(err)); }); // res.end('Done'); res.send("well done"); return; })
解决方法
首先,您必须告诉您的应用,您不希望bodyParser处理文件上传.
app.use(express.bodyParser());
app.use(express.json()); app.use(express.urlencoded()); app.use(express.multipart());
删除最后一行以自行处理文件上传.初始化表单时添加一些自定义选项
var form = new formidable.IncomingForm({ uploadDir: __dirname + '/tmp',// don't forget the __dirname here keepExtensions: true });
现在你的代码应该工作了.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。