上传(多个)二进制文件
节点.js
当您想通过 发布文件时事情变得复杂multipart/form-data
,尤其是多个二进制文件。下面是一个工作示例:
const FormData = require('form-data')
const fs = require('fs')
const path = require('path')
const formData = new FormData()
formData.append('files[]', JSON.stringify({ to: [{ phoneNumber: process.env.RINGCENTRAL_RECEIVER }] }), 'test.json')
formData.append('files[]', fs.createReadStream(path.join(__dirname, 'test.png')), 'test.png')
await rc.post('/restapi/v1.0/account/~/extension/~/fax', formData, {
headers: formData.getHeaders()
})
- 而不是
headers: {'Content-Type': 'multipart/form-data' }
我更喜欢headers: formData.getHeaders()
- 我使用
async
及await
以上,如果您不喜欢它们,可以将它们更改为普通的 Promise 语句
- 为了添加您自己的标题,您只需
headers: { ...yourHeaders, ...formData.getHeaders() }
新增内容如下:
浏览器
浏览器FormData
不同于 NPM 包“form-data”。以下代码在浏览器中对我有用:
HTML:
<input type="file" id="image" accept="image/png"/>
JavaScript:
const formData = new FormData()
// add a non-binary file
formData.append('files[]', new Blob(['{"hello": "world"}'], { type: 'application/json' }), 'request.json')
// add a binary file
const element = document.getElementById('image')
const file = element.files[0]
formData.append('files[]', file, file.name)
await rc.post('/restapi/v1.0/account/~/extension/~/fax', formData)