上传(多个)二进制文件
Node.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语句
以下是新增内容:
浏览器
浏览器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)