javascript - 内容类型八位字节流并在后端处理它
问题描述
我正在通过前端的表单上传 pdf 图像,然后将其发送到后端并保存在那里。我在前面使用 FormData 对象来存储图像。将其保存到后端会将内容类型标头设置为Content-Type: application/octet-stream
. 使用 nodejs 保存它的工作原理如下:
fs.writeFile(this.TMP_FILE, fileBinary, 'binary', (err) => {
if (err) {
reject(new TechError('File upload error_stage1'));
}
resolve();
})
它是工作代码,但我不完全理解为什么,因为当您将有效负载登录到控制台时,您会得到如下内容:
------WebKitFormBoundaryzeBEQrZzkzny72uz
Content-Disposition: form-data; name="file"; filename="5b929145ca1f9c2394e4b2e9-1PDF.pdf"
Content-Type: application/pdf
------WebKitFormBoundarysAZurrUo3QA6bEO7
Content-Disposition: form-data; name="file"; filename="1PDF.pdf"
Content-Type: application/pdf
%âãÏÓ1.3
O 9/E 3524/N 1/T 7656/H [ 451 137]>>
<</DecodeParms<</Columns 4/Predictor 12>>/Filter/FlateDecode/ID[<4DC91A1875A6D707AEC203BB021C93A0><F6C92B368A8A13408457A1D395A37EB9>]/Index[7 21]/Info 6 0 R/Length 52/Prev 7657/Root 8 0 R/Size 28/Type/XRef/
W[1 2 1]>>stream
hÞbbd``b`²╔
与二进制数据一样,我希望它是一个位数组,例如[11110101010010110101010101...]
. 为什么这行得通?
解决方案
console.log
将二进制数据(1 和 0 的流)解释为文本。Pdf 是二进制文件,但它们包含大量文本,这就是为什么您会在其中看到很多可识别字符的原因,但是也有很多乱码,因为 pdf 中用于不同目的的大量二进制数据将被打印为文字由console.log
11110101010010110101010101...
使用 打印二进制对象时,您永远不会看到输出console.log
。
推荐阅读
- excel - 保护单元格或范围的条件格式
- javascript - Discord.js - 角色中的用户通过 DM 添加
- python - 使用 python 模块最有效的方法是什么?
- android - 在一种特定情况下未观察到 LiveData
- python - 如何从列表数据中省略最后一个空字符串?
- asp.net-mvc-4 - 数据层中的代码优先迁移问题
- reactjs - 有没有办法让材料ui抽屉固定高度(并锚定底部)
- jsonschema - 我可以拥有一个在对象数组中添加字段的 JSON Schema 依赖项吗?
- java - (Forge) 实例化扩展 ItemAxe 的新类不起作用
- css - jupyter nbconvert 编译的reveal.js幻灯片可以在一张幻灯片上有两列吗?