在express.bodyParser()中指定上传图片的目录后,报400错误
发布于 9 年前 作者 lu-zhishen 3338 次浏览 最后一次编辑是 8 年前 来自 问答

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

表单信息: <form action=“upload” method=“post” enctype=“multipart/form-data”> <input type=“file” name=“pic”> <input type=“submit”> </form>

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

6 回复

和尚的问题很傻吗

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

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

@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)

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

回到顶部