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

时间:2021-02-12 14:34:59

标签: node.js fs multer

我正在使用 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
    }

我正在尝试将此文件保存到系统文件中。对于图像,我通常使用sharp,在这里我尝试使用 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 个答案:

答案 0 :(得分:0)

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

server {
 
    root /path/to/landing/page;
 
    index index.html index.htm index.nginx-debian.html;
    server_name mydomain; # managed by Certbot

    location /api/ {

             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_pass http://127.0.0.1:5000/;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate */fullchain.pem; # managed by Certbot
    ssl_certificate_key */privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

希望这可以帮助某人!

相关问题