node.js移动一堆文件

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

我已经为文件上传制作了一个表单,并设置了多个选项,因此我尝试上传一组文件,然后根据客户端设置的相册名称移动它们, 以下是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 = '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
   }