node.js移动一堆文件
我已经为文件上传制作了一个表单,并设置了多个选项,因此我尝试上传一组文件,然后根据客户端设置的相册名称移动它们, 以下是iv所做的:node.js移动一堆文件,node.js,file-upload,Node.js,File Upload,我已经为文件上传制作了一个表单,并设置了多个选项,因此我尝试上传一组文件,然后根据客户端设置的相册名称移动它们, 以下是iv所做的: if (req.body && req.body.album){ var album_name = req.body.album; } else{ //need to change to time instead of random album var album_name = 'un
if (req.body && req.body.album){
var album_name = req.body.album;
}
else{
//need to change to time instead of random album
var album_name = 'unknown_album-' + (parseInt(Math.random() * 5) + 1);
}
//File name
var file_name = null;
switch(req.files.img_file.type){
case 'image/png':
file_name = new Date().getTime() + '.png';
break;
case 'image/jpeg':
file_name = new Date().getTime() + '.jpeg';
break;
default:
res.render('admin/panel', {
title: 'אדמין',
message: 'קובץ לא תקין'
});
break;
}
mkdirp('./public/img/albums/' + album_name, function (err) {
if (err)
console.error(err);
else
{
_.each(req.files.img_file,function(val,index){
console.log(val.path + " " + index);
//gives the file path so i can read it
fs.readFile(val.path, function (err, data) {
if (err){
console.log("fs " + err);
}
//so until here everything works fine, the files are uploaded to the "/uploads" directory, now im trying to move them to the correct album, the destiation is : public/img/albums/:album_name/:all_images here
mv(val.path, './public/img/albums/' + album_name + '/' + val.path, function(err) {
if (err){
console.log("mv " + err);
}
else{
res.render('admin/panel', {
title: 'אדמין',
message: 'קובץ עלה בהצלחה'
});
res.redirect('/admin');
}
});
});
});
}
});
mv模块抛出一个错误,重命名为“c:/work/xxx/xx/uploads/val.path.png这是一个文件访问错误。您将一些文件名用X表示出来,但看看NPM模块是如何处理文件的,并确保您正确命名了文件和路径。然后应该可以正常工作。我使用了读写流并删除了“mv”模块
c:/work://
对我来说似乎不是有效路径。我的坏消息是我写错了。它的c:/work/…您要将文件移动到的目录是否已经存在?通过mv模块,您的意思是您正在使用库?该目录已经存在,是的,我的意思是您链接到的mv模块。。
if (req.body && req.body.album){
var album_name = req.body.album;
}
else{
//need to change to time instead of random album
var album_name = 'unknown_album-' + (parseInt(Math.random() * 5) + 1);
}
//File name
if (req.files.img_file.length > 1)
{
var Counter = 0;
_.each(req.files.img_file,function(val,index){
var file_name = null;
switch(val.type){
case 'image/png':
file_name = new Date().getTime() + '.png';
break;
case 'image/jpeg':
file_name = new Date().getTime() + '.jpeg';
break;
}
mkdirp('./public/img/albums/' + album_name, function (err) {
if (err)
console.error(err);
var source = fs.createReadStream(val.path);
var dest = fs.createWriteStream('./public/img/albums/' + album_name + '/' + val.name);
source.pipe(dest);
source.on('end', function() {
console.log('end...');
Counter++;
console.log(Counter);
console.log(req.files.img_file.length);
if (Counter == req.files.img_file.length){
res.redirect('/admin');
res.render('admin/panel', {
title: 'אדמין',
message: 'קובץ עלה בהצלחה',
albums: albums
}); //eo res render
}
});
source.on('error', function(err) { console.log('error'); });
});// eo mkdir
}); // eo _each
}