NodeJs如何将Multer Buffer保存到系统上的文件中

Posted

技术标签:

【中文标题】NodeJs如何将Multer Buffer保存到系统上的文件中【英文标题】:NodeJs how to save a Multer Buffer into a file on system 【发布时间】:2021-05-16 07:31:28 【问题描述】:

我正在使用 Multer 来解析来自 Formdata 的音频文件 Multer 部分正在工作,我可以访问以下内容:

audioUri: [
    
      fieldname: 'audioUri',
      originalname: 'audio.m4a',
      encoding: '7bit',
      mimetype: 'audio/m4a',
      buffer: <Buffer 00 00 00 18 66 74 79 70 6d 70 34 32 00 00 00 00 69 73 6f 6d 6d 70 34 32 00 00 04 dc 6d 6f 6f 76 00 00 00 6c 6d 76 68 64 00 00 00 00 dc 4c 17 fc 
dc 4c ... 42739 more bytes>,
      size: 42789
    

我正在尝试将此文件保存到系统文件中。对于图像,我通常使用清晰的图像,在这里我尝试如下使用 fs

const newpath = `assets/audio/orders/$fileName`;
    const readFile = util.promisify(fs.readFile);
    const data = await readFile(req.files.audioUri[0].buffer);
    const chunk = new Uint8Array(data);
    await fs.writeFileSync(newpath, chunk);

我收到了TypeError [ERR_INVALID_ARG_VALUE]: The argument 'path' must be a string or Uint8Array without null bytes

【问题讨论】:

【参考方案1】:

显然不需要从缓冲区中读取文件,可以直接保存如下:

 const newpath = `assets/audio/orders/$fileName`;
 fs.writeFileSync(newpath, req.files.audioUri[0].buffer);

希望这可以帮助别人!

【讨论】:

以上是关于NodeJs如何将Multer Buffer保存到系统上的文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NodeJS 中保存和显示使用 Multer 包保存的图片?

如何使用 multer 和 NodeJS 将图像上传到 GCS 存储桶?

如何在nodejs中使用sharp调整图像大小然后使用multer上传

如何在nodejs中使用sharp调整图像大小然后使用multer上传

multer,multiparty和connect-multiparty + Nodejs之间的区别

如何将multer保存在内存中的文件上传到另一个API