使用 Blob、Buffer、BinaryString 附加表单数据(后端 NodeJS)

问题描述 投票:0回答:1

是否有任何方法或任何受支持的表单数据包将表单数据附加到 Buffer、BinaryString 或 Blob 对象,并通过 API 使用内容类型 multipart/form-data 请求它(它是服务器到服务器的请求,不是来自客户)。我已经知道它可以附加 StreamObject、File 对象,但是当我尝试使用 BinaryString 或 Blob 以及 form-data npm package 时,它会报错。假设我从远程资源获取Blob、Buffer,或者读取本地文件 例如:

import FormData from 'form-data'; const form = new FormData(); form.append('files[]', buffer or blob); // buffer is retrieved as result from fs.readFile // Then request this form to an API, it's failed

	
node.js request buffer multipartform-data form-data
1个回答
0
投票
content-type: multipart/form-data

,但实际的表单数据也需要有

its
content-type 标识,在某些情况下还需要标识文件名:
POST /my/server/path HTTP/1.1
....
content-type: multipart/form-data; boundary=--------------------------794262681322510475281872
...
Transfer-Encoding: chunked

2fe5b
----------------------------794262681322510475281872
Content-Disposition: form-data; name="image"; filename="my-image.jpg"
Content-Type: image/jpeg

...a bunch of binary data...

form-data

包从

content-type
推断文件名和
fs.ReadStream
,因为该信息在您读取到流的文件中可用。对于原始
Buffer
Blob
,它只是原始数据,而
form-data
无法推断内容类型,因此您需要明确设置它:
formData.append('image', buffer, {filename: 'image.jpg', contentType: 'image/jpg'});

您需要使其适应服务器的 API 规范,但这是总体思路。请参阅
此处

了解更多详情。

© www.soinside.com 2019 - 2024. All rights reserved.