CNode

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

Hhuangdh3发布于14 年前最后回复14 年前13 回复11529 浏览0 收藏

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)

S
sinple#1·14 年前

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

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

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

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

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

M
majong#6·14 年前

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

S
sumory#7·14 年前

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

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

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

var temp_path = req.files.uploadName.path

是成功滴~

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

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

V
voidjs#10·14 年前

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

W
w3hacker#13·14 年前

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

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