我收到ebay-api的回复。
--MIMEBoundaryurn_uuid_C91296EA5FF69EE9571479882375576565344内容-类型: application/xop+xml;charset=utf-8;type="text/xml“内容-传输-编码:二进制内容-ID:<0.urn:uuid:C91296EA5FF69EE9571479882375576565345> Success1.1.02016-11-23T06:26:15.576Z514 --MIMEBoundaryurn_uuid_C91296EA5FF69EE9571479882375574545344内容-类型:应用程序/压缩内容-传输-编码:二进制内容-ID: [��@�50014028337_report.xmlUT y�2 x�2 2Xux 00�R�j�@��+����PlX#�(�x,=l�qLfewc��wĤ��o��١�HT���t��GGT���6�;���‘������.$����=d����m;c}Wߦ�RW�A f�����g�i��4U��x��3��f���ғ{f��xj�,+���ۖi%5��B‘s��G,#��t,L{�c�����MD笓��)!�9�����M_o;8_��<�i�y����sz���u���=��Ջ^2�S��%+2�2�`QV�$�����~?�w�ǥ�_Q�퉦�'PKY'uIi[��@���50014028337_report.xmlUTy�2Xux00PK\��
这是字符串类型。我提取了附带的zip文件数据,即
[��@�50014028337_report.xmlUT y�2 x�2 2Xux 00�R�j�@��+����PlX#�(�x,=l�qLfewc��wĤ��o��١�HT���t��GGT���6�;���‘������.$����=d����m;c}Wߦ�RW�A f�����g�i��4U��x��3��f���ғ{f��xj�,+���ۖi%5��B‘s��G,#��t,L{�c�����MD笓��)!�9�����M_o;8_��<�i�y����sz���u���=��Ջ^2�S��%+2�2�`QV�$�����~?�w�ǥ�_Q�퉦�'PKY'uIi[��@���50014028338_report.xmlUTy�2Xux00PK\�
这表明它中有一个report.xml。因此,当我将这些数据写入zip文件时,它会创建一个zip文件,提取后会出现错误。
fs.writeFile("./static/DownloadFile.zip", fileData, 'binary', function(err){
if (err) throw err;
console.log("success");
});如何正确地将这些数据写入zip文件。请指教。如果需要任何更多的信息。
编辑:我尝试用PHP编写zip文件,并成功地用以下代码编写它:
$zipFilename="DownloadFile.zip";
$data = $fileData;
$handler = fopen($zipFilename, 'wb')
or die("Failed. Cannot Open $zipFilename to Write!</b></p>");
fwrite($handler, $data);
fclose($handler);请建议我如何在nodejs中实现同样的目标。
发布于 2020-06-18 22:22:18
取决于您正在使用的HTTP客户机,实现可能会发生一些变化。
对于axios,我所做的事情如下:
Accept头指定为application/zipbuffer而不是Binary,请将responseType指定为arrayBufferconst res = await axios.get('/routToThat/file', {
headers: {
Accept: 'application/zip',
},
responseType: 'arraybuffer',
});通过执行后一种方法,而不是从响应中接收Binary:
A@B�ArE⏾�7�ϫ���f�걺N�����Yg���o_M^�D�T�U X_���e?� hi\...我收到一个缓冲器:
Buffer(22781691) [80, 75, 3, …]一旦请求被解析,并且我有了那个缓冲区,我就使用来自fs的相同的fs函数。
注意事项:我没有在writeFile中指定Encoding
fs.writeFile(name, res.data, (err) => {
if (err) throw err;
console.log("success");
});发布于 2017-09-13 10:51:40
正如我在您的代码示例中看到的,您的二进制数据已经被请求模块破坏了。只需在请求设置中使用
encoding:null而zip文件是正文中的有效二进制文件(现在是缓冲区,而不是utf-8字符串!)你可以减压。只要您看到问号,您仍然存在编码问题。
https://stackoverflow.com/questions/40757545
复制相似问题