CNode

在express.bodyParser()中指定上传图片的目录后,报400错误

问答
Llu-zhishen发布于11 年前最后回复11 年前6 回复3985 浏览0 收藏

错误信息: ENOENT, open 'uploads/7472-1m5i0xy.jpg' 400 Error: ENOENT, open 'uploads/7472-1m5i0xy.jpg' at Error (native)

表单信息:

处理图片上传的upload函数内容已全注释,写了一个console(“”);但是并未到达此函数即报400错误。

查看回复

回复 (6)

P
pfcoder#1·11 年前
引用 lu-zhishen@pfcoder 后台处理函数,没有指定上传的目录 var pic = req.files.pic.size+' '+req.files.pic.name; console.log(req.b...

@lu-zhishen fs调用中'.'代表的是node执行路径,可能不一定刚好匹配你想要的当前路径,你可以尝试改成__dirname + '/public/images/', 并确保 images路径存在

L
lu-zhishen#2·11 年前

和尚的问题很傻吗

P
pfcoder#3·11 年前

多半是路径问题,检查下uploads路径,目录存在吗?

L
lu-zhishen#4·11 年前
引用 pfcoder多半是路径问题,检查下uploads路径,目录存在吗?

@pfcoder 现在发现与标题的描述问题无关,我指定了图片的上传路径后,这个错误就出来了,app.use(express.bodyParser({uploadDir:'./uploads'}));,出掉花括号的内容,可以获取到图片内容,但运行到转移至新目录时,就会报错。

L
lu-zhishen#6·11 年前
引用 pfcoder@lu zhishen '但运行到转移至新目录时,就会报错' 报什么错呢?最好贴出完整代码

@pfcoder 后台处理函数,没有指定上传的目录 var pic = req.files.pic.size+'***'+req.files.pic.name; console.log(req.body.username); console.log(req.body.password); console.log(req.files.pic.name); var fs = require('fs'); //临时目录 var temp_path = req.files.pic.path;

//新的目录
var new_path = './public/images/'+req.files.pic.name;

//移动文件到新目录
fs.rename(temp_path,new_path,function(err){
	if (err) throw err;
    res.send("Upload success");
});

报错信息:
Error: ENOENT, rename '/tmp/4079-geghw2.jpg'
at Error (native)
参与回复
登录后即可参与回复。登录