使用 multer 从客户端获取详细信息后,如何在 NodeJS 中对文件进行 Base64 编码

Rup*_*esh -1 javascript node.js multer angular

我将文件详细信息从 Angular 发送到我的 app.js

onFileSelected(event: EventEmitter<File[]>) {
    const file: File = event[0];
    console.log(file); 
    const formData = new FormData();
    formData.append('file', file);
    const r = new XMLHttpRequest();
    r.open('POST', '/user/upload');
    r.send(formData);
}
Run Code Online (Sandbox Code Playgroud)

然后在app.js中

const multer = require('multer');
const upload = multer({dest:'./pics/'});

router.post('/upload', upload.single('image'),  (req,res) => {
  const body = req.file;
  console.log(body);

  const base64Data = new Buffer(JSON.stringify(body)).toString("base64");

  console.log(base64Data);
}
Run Code Online (Sandbox Code Playgroud)

和我的console.log(body)给予

{ fieldname: 'image',
  originalname: '21329726_1866651723650020_188839340_o.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  destination: './pics/',
  filename: '5146c9818ff517c426e34ad84ff3513f',
  path: 'pics/5146c9818ff517c426e34ad84ff3513f',
  size: 94093 
}
Run Code Online (Sandbox Code Playgroud)

现在问题来了——

1 - 我不想将image/pdf文件上传到任何文件夹中,但它正在上传到'./pics/'.

2-我想上传该文件,这就是cloudinary 为什么我想生成base64该文件,但是当我生成base64并上传该文件到云中时,它会出现错误。

我认为这不是正确的编码方法,base64或者我正在编码错误的数据格式。

请帮我。

use*_*994 7

通过提供选项对​​象(在本例中{dest:'./pics/'}),您表明multer要将文件存储在该目录中。相反,将其配置为将文件保存在内存中:

var storage = multer.memoryStorage()
var upload = multer({ storage: storage })
Run Code Online (Sandbox Code Playgroud)

根据文档,该file对象还应该包含一个buffer包含文件数据的属性。您应该能够执行以下操作:

console.log(body.buffer.toString("base64"));
Run Code Online (Sandbox Code Playgroud)