跟着这里的教程走到最后部分:http://www.nodebeginner.org/index-zh-cn.html
附上我的上传函数代码:
function upload(response, request){
var form = new formidable.IncomingForm();
//form.uploadDir = "tmp";
form.parse(request, function(error, fields, files) {
//var filename = path.basename(files.upload.path);
fs.renameSync(files.upload.path, "/tmp/test.png");
response.writeHead(200, {"Content-Type": "text/html"});
console.log(files.upload.path);
response.write("<img src='/show' />");
response.end();
});}
在网上找了许多方法,都无法实现,大部分说的是,rename及其相关方法,无法移动文件到别的区间。解决方法都是设置uploadDir,我设置了无效呢。
我发现这里的files.upload.path很奇怪,我取到文件名,然后
fs.renameSync('/tmp' + filename, "/tmp/test.png");
结果提示居然和没改的一样,好像传递给renameSync的第一个参数无效似的 附错误提示:请高手支招
fs.js:439 return binding.rename(pathModule._makeLong(oldPath), ^ Error: ENOENT, no such file or directory 'F:\cygwin\tmp\befd1e150d5d8451478fcef24f0d657b' at Object.fs.renameSync (fs.js:439:18) at F:\cygwin\home\Arrowing\requestHandlers.js:61:6 at IncomingForm.parse (F:\cygwin\home\Arrowing\node_modules\formidable\lib\incoming_form.js:121:9) at IncomingForm.EventEmitter.emit (events.js:85:17) at IncomingForm._maybeEnd (F:\cygwin\home\Arrowing\node_modules\formidable\lib\incoming_form.js:383:8) at IncomingForm.handlePart (F:\cygwin\home\Arrowing\node_modules\formidable\lib\incoming_form.js:212:12) at File.end (F:\cygwin\home\Arrowing\node_modules\formidable\lib\file.js:71:5) at WriteStream.flush (fs.js:1509:9) at Object.oncomplete (fs.js:297:15) at process.startup.processMakeCallback.process._makeCallback (node.js:238:20)