0
时候我已经写了一些中间件上传头像,就像这样:Expressjs:ENOENT上传图像
var gm = require('gm'),
mkdirp = require('mkdirp'),
fs = require('fs');
uploadAvatar = function(req, res, next) {
var img, path, user;
if (req.files.avatar_image) {
user = req.user;
img = req.files.avatar_image;
path = __dirname + "/../../public/avatar/" + (user.name.parameterize()) + ".png";
mkdirp.sync(__dirname + "/../../public/avatar/");
fs.createReadStream(img.path).pipe(fs.createWriteStream(path));
gm(path).resize(250, 250).autoOrient().quality(90).write(path, function(err) {
if (err != null) {
req.flash('error', err);
} else {
user.avatar = "/avatar/" + (user.name.parameterize()) + ".png";
user.save(function(err) {
if (err != null) {
req.flash('error', err);
}
next();
});
}
});
} else {
next();
}
};
// Usage
app.post('/upload', ensureAuthenticated, uploadAvatar, handleUpload);
当我现在试着上传一张图片,node
坠毁与难以置信的帮助错误消息:
events.js:72
throw er; // Unhandled 'error' event
^
Error: ENOENT, open '/tmp/1126846a248af5c584770b07de649f9b.png'
我曾尝试使用它之前gm
复制文件了。作为一种“安全”,我怀疑在我甚至可以触摸它之前,express会删除这个文件。
谁能帮助我在这里?
编辑:Full source所有的
请看看我说的要点,并告诉我,我做错了。我*是*在调整大小之前复制文件。 – Lanbo
检查权限的临时目录,及其母公司等。为了确保正在运行节点进程的用户有权访问临时文件夹中的文件。 – moka
对不起,我刚刚发现的临时目录不存在。不知道为什么。 – Lanbo