上传(多个)二进制文件
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: formData.getHeaders()
,而不是 headers: {'Content-Type': 'multipart/form-data' }
- 如果您不喜欢
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()
formData.append('files[]', new Blob(['{"hello": "world"}'], { type: 'application/json' }), 'request.json')
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)