我正在通过前端的表单上载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...]
之类的位数组。为什么这样做有效?
答案 0 :(得分:0)
console.log
将二进制数据(1和0的流)解释为文本。 Pdf是二进制文件,但它们包含很多文本,因此您在其中看到很多可识别的字符,但是也有很多乱码,因为pdf内部的许多用于不同目的的二进制数据将被打印为console.log
使用11110101010010110101010101...
打印二进制对象时,将永远不会看到console.log
的输出。