跳到主要内容
CNode

NodeJS教程--基于ExpressJS框架的文件上传(windows下无法rename的情况)

社区
Hhuangdh3发布于 14 年前最后回复 14 年前
13115670

NodeJS教程--基于ExpressJS框架的文件上传 看了上面一篇关于文件上传的这个代码,在测试windows下的时候是会报错,各位童鞋说了是因为windows下无法rename的原因! 就思考了下,如果只是图片一些小文件上传的话,我们可否去读取文件信息,然后在写回到一个新的文件,这样就不存在文件移动,但是会造成很多垃圾信息!

fs.readFile(tmp_path, function(error, data){
            fs.writeFile(target_path, data, function (err) {
                if (err) throw err;
                console.log('It\'s saved!');
            });
        });
查看回复

回复 (13)

M
majong#1314 年前

在windows下,如果上传目录和要移动的目标目录不在同一个磁盘上,rename会失败.

W
w3hacker#1214 年前

好东西 啊 我也推荐个教程吧 bbs.w3hacker.com

S
sinple#1014 年前
fs.rename(tmp_path, target_path, function(err) {
  .....
  // 删除临时文件夹文件, 
  fs.unlink(tmp_path, function() { ... });
});

如果rename调用成功的话,express会自动删除(unlink)临时文件吧。如果非rename返回的时候,才需要调用unlink,是这样吗?

S
sinple#814 年前
引用 sinpleie下上传图片,提示下载。楼主遇到过相同问题吗?

@huangdh3 搞定了,呵呵。是我上传后这样返回的res.send({ status: 'success', url: url });。windows ie会将返回来的json当成文件进行下载。后来我用text返回就好了。

S
sinple#614 年前

ie下上传图片,提示下载。楼主遇到过相同问题吗?

V
voidjs#414 年前

建议升级到8.0,我之前无法rename,现在成功了

S
sumory#314 年前
引用 sumory你确定上传成功了,找到临时文件先

@huangdh3 自己设置下临时路径吧

H
huangdh3#214 年前
引用 sumory你确定上传成功了,找到临时文件先

嗯,我上传成功了~那个临时文件这样获取

var temp_path = req.files.uploadName.path

是成功滴~

S
sumory#114 年前

你确定上传成功了,找到临时文件先

参与回复

登录后即可参与回复。登录