I have a response from an ebay-api
–MIMEBoundaryurn_uuid_C91296EA5FF69EE9571479882375576565344 Content-Type: application/xop+xml; charset=utf-8; type=”text/xml”
Content-Transfer-Encoding: binary Content-ID:
<0.urn:uuid:C91296EA5FF69EE9571479882375576565345>Success1.1.02016-11-23T06:26:15.576Z514
–MIMEBoundaryurn_uuid_C91296EA5FF69EE9571479882375574545344 Content-Type: application/zip Content-Transfer-Encoding: binary
Content-ID:PKY’uIi[��@�50014028337_report.xmlUT y�2Xy�2Xux
00�R�j�@��+��[��PlX#�(�x,=l�q]Lfewc��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�2Xux
00PK�
–MIMEBoundaryurn_uuid_C91296EA5FF69EE9571479882375576565344–
This is of type string. and i extracted the attached zip file data i.e.
PKY’uIi[��@�50014028337_report.xmlUT y�2Xy�2Xux
00�R�j�@��+��[��PlX#�(�x,=l�q]Lfewc��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�2Xux
00PK�
This shows that it has a report.xml in it. So when i write this data in a zip file, it creates a zip file and upon extract gives error.
fs.writeFile("./static/DownloadFile.zip", fileData, 'binary', function(err){
if (err) throw err;
console.log("success");
});
How can i write this data in a zip file properly. Pls advice. If required any more information.
EDIT:
I tried writing the zip file in PHP and is succssfully writing it with this code:
$zipFilename="DownloadFile.zip";
$data = $fileData;
$handler = fopen($zipFilename, 'wb')
or die("Failed. Cannot Open $zipFilename to Write!</b></p>");
fwrite($handler, $data);
fclose($handler);
Please advice how can i achieve the same thing in nodejs.
2
Answers
As I see in your code example your binary data is already mangled by request module. Just use in request setting
and the zip file is a valid binary in body (now buffer instead of utf-8 string!) you can decompress. As long as you see the questions marks you still have the encoding issue.
Depending on what HTTP Client you are using the implementation might change a little.
With
axios
I’m doing something like so:Accept
header asapplication/zip
buffer
and notBinary
, specify theresponseType
asarrayBuffer
By doing the latter, instead of receiving a
Binary
from the response:I receive a Buffer:
Once the request is resolved and I have that Buffer, I use that same
writeFile
function fromfs
NOTE: I’m not specifying the
Encoding
inwriteFile