使用nodeJS将文件添加到同一文件夹

卡塔罗蒂

我想添加mp3, lrc, wav, txt到服务器,文件夹名称将是title,上面提到的所有扩展名都将具有指定的名称。如代码中所示,mp3为"vocal.mp3"

addSong(event) {

    jQuery('#addItemSave').text("Please wait!");

    this._service.addSong(this.authorText, this.titleText, this.durationText, this.genre).subscribe(
        res => {
            this.data.push(res.data[0]);
            this.addSongFilesToServer();
    });
}

private addSongFilesToServer() {
    this._service.addSongFilesToServer(this.titleText,
            this.mp3file, this.lrcfile, this.pitchfile, this.thumbfile).subscribe(
        res => {
            console.log("Done! Now hide loading icon or what ever...");
            jQuery('#addItemSave').text("Save");
            jQuery('#addNewSongDialog').modal('hide');
            jQuery('#addNewSongDialog').find("input,textarea,select")
                    .val('')
                    .end()
                .find("input[type=checkbox], input[type=radio]")
                    .prop("checked", "")
                    .end();
    });
}

addSongFilesToServer(title, mp3, lrc, txt, thumb) {
    let url = this._config.ServerWithApiUrl + "uploadFiles";
    let body : FormData = new FormData();
    body.append('mp3', mp3, "vocal.mp3");
    body.append('txt', txt, "pitches.txt");
    body.append('lrc', lrc, "lyric.lrc");
    body.append('thumb', thumb, "thumbnail.png");
    body.append('title', title);
    this._config.headers.delete('Content-Type');

    return this._http.post(url, body, { headers: this._config.headers })
        .map(res => res.json()).catch(function(err){
            throw err;
    });
}

addSong(event)当在页面上按下按钮并且所有需要传递的文件都被传递时,将调用。唯一的问题是,例如,mp3, lrc, wav, txt将所有文件夹和所有文件夹都放在下面vocal.mp3

只是为了说明,这就是我目前所得到的:

├───songs
│   ├───vocal
│   │    vocal.mp3
│   ├───pitches
│   │    pitches.txt
...

这就是我需要的:

├───songs
│   ├───title
│   │    vocal.mp3
│   │    lyric.lrc
│   │    pitches.txt
...

和服务器端:

Router.post('/uploadFiles', (req, res) => {

    var title = req.body.title || "title";

    var storage = multer.diskStorage({
        destination: function (req, file, cb) {
            var dir = "../songs/" + file.originalname.split('.')[0];
            if (!fs.existsSync(dir)){
                fs.mkdirSync(dir);
            }
            cb(null, dir);
        },
        filename: function (req, file, cb) {
            cb(null, file.originalname);
        }
    });

    var upload = multer({ storage : storage}).any();
    upload(req,res,function(err){            
        if(err){            
            return res.status(500).send({ 
                code: 500, message: 'could not upload file: ' + err, error: err });
        }else {
            return res.status(200).send({ 
                code: 200, message: 'All files uploaded!', err: ""});
        }                     
    });       
});
阿里特拉·查克拉博蒂(Aritra Chakraborty)

您可以在示例中看到以这种方式实际编码

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        var dir = "../songs/" + file.originalname.split('.')[0];
        if (!fs.existsSync(dir)){
            fs.mkdirSync(dir);
        }
        cb(null, dir);
    },
    filename: function (req, file, cb) {
        cb(null, file.originalname);
    }
});

file.originalname.split('.')[0]实际分割的延伸和采取的文件名。

这样就var dir = "../songs/" + title;简单明了。

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        ////////////////////////////
        var dir = "../songs/" + title;
        ///////////////////////
        if (!fs.existsSync(dir)){
            fs.mkdirSync(dir);
        }
        cb(null, dir);
    },
    filename: function (req, file, cb) {
        cb(null, file.originalname);
    }
});

另外,body-parser不处理多部分主体,这就是FormData提交的形式。因此,req.body.title将无法正常工作。

检查以供参考:如何处理来自Express 4的FormData
最可能需要以title其他方式发送

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将另一个对象添加到同一文件夹时,如何使s3对象过期?

将项目添加到来自同一文件的txt输出中

使用“ a”模式多次添加到同一文件

将go文件导入同一文件夹

同一文件夹中的 Rust mod 文件与使用

Gulp:将SASS编译为同一文件夹中的CSS

htaccess 将文件夹重定向到具有变量的同一文件夹

将创建的 zip 文件夹解压缩到同一文件夹?

使用Python 2.7.5将文件夹中的所有压缩文件解压缩到同一文件夹

使用 TS 自动导出同一文件夹中的所有组件

如何在同一文件夹中使用Powershell生成Zip

如何将文件名基于文件夹名称的文件移动到同一文件夹中的子文件夹

如何在循环中使用grep并每次将新行文本添加到同一文件?

如何将一列添加到另一文件

将T4生成的文件包括在模板文件的同一文件夹中

文件名来自同一文件夹中的其他文件

从与.jar文件位于同一文件夹中的文件读取

Eclipse-如何将本地源文件导入同一文件夹?

将docx文件转换为Google文档并放置在同一文件夹中

将文件复制到同一文件夹中,并用名称替换年份

将txt文件保存到与C ++中cpp文件位于同一文件夹的文件夹中

如何使用Gulp解压缩同一文件夹中的多个文件

使用同一文件夹中的文件自动多次运行应用程序

如何使用“ mv”收集“ find”在同一文件夹中找到的所有文件?

尝试使用linq查询同一文件夹中的许多文本文件

在同一文件夹中的txt文件中使用日志和参数进行卷曲

在不同的动作脚本文件(在同一文件夹中)中使用ActionScript类

如何使用 os.scandir 循环同一文件夹中的所有光栅文件

HTML无法识别同一文件夹中的JS文件