首页 > 解决方案 > 内容类型八位字节流并在后端处理它

问题描述

我正在通过前端的表单上传 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...]. 为什么这行得通?

标签: javascriptnode.jsfileencoding

解决方案


console.log将二进制数据(1 和 0 的流)解释为文本。Pdf 是二进制文件,但它们包含大量文本,这就是为什么您会在其中看到很多可识别字符的原因,但是也有很多乱码,因为 pdf 中用于不同目的的大量二进制数据将被打印为文字由console.log

11110101010010110101010101...使用 打印二进制对象时,您永远不会看到输出console.log


推荐阅读