看node入门那本书遇到了些问题,求高手解答!!
发布于 11 年前 作者 a376522030 3257 次浏览 最后一次编辑是 8 年前

书上最后一个例子上传图片的,我用renameSync这个方法一直不能修改文件名,而且每次重启服务文件名都会变 /tmp/fb20b668d3de6a8df4d5d6c078eff1fd tmp后面的那一串总是再变,每重启一次服务器都会变,求解答,另附页面显示的文件详细信息:::{ fields: { title: ‘test’ }, files: { upload: { domain: null, _events: {}, _maxListeners: undefined, size: 6286, path: ‘/tmp/fb20b668d3de6a8df4d5d6c078eff1fd’, name: ‘test.png’, type: ‘image/png’, hash: null, lastModifiedDate: Wed Nov 20 2013 23:11:01 GMT+0800 (CST), _writeStream: [Object] } } }

系统是ubuntu 12.04LTS node版本:v0.11.2 npm版本:1.2.21

8 回复

用变量名不就行了嘛。

path: ‘/tmp/fb20b668d3de6a8df4d5d6c078eff1fd’, name: ‘test.png’

xyz.files.path - upload 文件名 xyz.files.name - 原来的文件名

不懂什么意思,能详细说下么!!!另附upload方法的代码:: console.log(“Request handler ‘upload’ was called.”); var form=new formidable.IncomingForm(); console.log(“about to parse”); form.parse(request,function(error,fields,files){ try{ fs.renameSync(files.upload.path,"/tmp/test.png"); }catch(e){ console.log(e); } console.log(“parsing done “+files.upload.path); response.writeHead(200,{“Content-Type”: “text/html”}); response.write(“recrived image:<br/>”); response.write(”<img src=’/show’/>\n\n”); response.end(sys.inspect({fields: fields, files: files}));

@a376522030

fs.renameSync(files.upload.path,"/tmp/test.png");

这行出了什么错?

@leapon没有出错,就是图片显示不出来!!!!!!!!

@a376522030

图片显示不出来是因为文件在 /tmp。可显示的文件在 project 的 public 目录下。fs.renameSync 要把文件挪到 project 的 public 目录下。

@leapon 我是直接用gedit写的没有public目录啊 难道要自己创建么???

@leapon 我觉得就是那个renameSync方法没有执行,因为我在后面用console.log输出files.upload.path时还是跟原来一样,一大堆看不懂的字符```

@a376522030

你有没有加 public 目录? app.use(express.static(process.cwd() + ‘/public’));

public 目录下的文件是网站上可见的。

回到顶部