use*_*851 4 javascript node.js
我一直在玩一本关于Node.js的书中的代码.这是一个上传图片的简单应用程序.
它显示EXDEV错误(500错误:EXDEV,重命名).
有人能给我一个暗示吗?这是我的代码:
exports.submit = function(dir) {
return function(req, res, next) {
var img = req.files.photo.image;
var name = req.body.photo.name || img.name;
var path = join(dir, img.name);
fs.rename(img.path, path, function (err) {
if(err) return next(err);
Photo.create({
name: name,
path: img.name
}, function (err) {
if(err) return next(err);
res.redirect('/');
});
});
};
};
Run Code Online (Sandbox Code Playgroud)
rob*_*lep 20
重命名文件不能跨设备完成.我的猜测是你的上传目录(默认情况下是/tmp)在另一个分区/驱动器上作为目标目录(包含在dir变量中).
一些解决方案
express.bodyParser的模块(以及它使用的模块connect.multipart)接受uploadDir您可以使用的选项;在启动Node应用程序之前,将TMPDIR环境变量设置为指向与目标目录位于同一分区/驱动器上的临时目录.如果您使用的是Unix类型的操作系统:
env TMPDIR=/path/to/directory node app.js
Run Code Online (Sandbox Code Playgroud)而不是从shell设置环境变量,将其设置在Node应用程序的顶部:
process.env.TMPDIR = '/path/to/directory';
Run Code Online (Sandbox Code Playgroud)mv这样的模块可以跨设备工作;| 归档时间: |
|
| 查看次数: |
8335 次 |
| 最近记录: |