内容类型八位字节流并在后端对其进行处理

时间:2018-11-01 18:28:12

标签: javascript node.js file encoding

我正在通过前端的表单上载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`²╔

binary 数据一样,我希望它是诸如[11110101010010110101010101...]之类的位数组。为什么这样做有效?

1 个答案:

答案 0 :(得分:0)

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

的文字

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