Загрузка двоичного файла PNG с помощью JS

#javascript #node.js #express

#javascript #node.js #экспресс

Вопрос:

Мой сервер получает двоичный файл PNG со стороннего сервера, который выглядит следующим образом:

PNG


IHDR���2%FiCCPICC Profile(�c``I,(�aa``�� )
rwR���R`��� ���`����\��T��Q��k� ��.ȬE2�����o��ט�QWJjq2���i�E%�)@�ryI��d�d���!�
 v�}�amp;$�Ⱦd$g$�`|d�$!��#�������BhNIQ����JR J@�s~AeQfzF��#0�R<��t��@aQ��8,�8b�@V�@��X�Ö�d���$An��Q�E�p0~c)N36����30�N���s8�amp;�����������e̷|cn`amp;���eXIfMM*>F(�iN����x���ASCIIScreenshot7�   pHYs%%IR$��iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>1924</exif:PixelYDimension>
         <exif:PixelXDimension>3808</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
_���iDOT�(��N�ɦ�@IDATx���U��� DQY"Xc��
  

Я отправлял ответ прямо клиенту, делая это:

 const file = await downloadImageFromThirdParty()
res.status(200).send(file)
  

Когда я тестировал это с postman, я смог увидеть необработанные данные, но если я отправлю запрос с postman на сторонний сервер, я смогу увидеть изображение в качестве ответа.

После этого я произвел некоторые манипуляции с заголовком запроса и ответа, но, тем не менее, изображение на почтальоне не отображается.

 let file = await downloadImageFromThirdParty()
file = Buffer.from(file)
res.set('Content-Type', "image/png;base64");
res.set('Content-Disposition', "attachment;filename*=UTF-8''Step-2.png")
return res.status(200).end(attachment, 'binary');
  

Чего мне не хватает?

Пожалуйста, простите за любую опечатку, поскольку английский — мой второй язык.

Комментарии:

1. Установка типа ответа в blob является правильной. Если downloadAttachment возвращает большой двоичный объект, просто передайте его в FileSaver.SaveAs в качестве первого аргумента.

2. @musa да, вы правы. Я обнаружил, что моя проблема заключается в том, как мой сервер возвращает изображение, поскольку postman также не может отображать изображение. Я соответствующим образом обновил свой вопрос.

3. Какой тип данных возвращает downloadImageFromThirdParty?

4. @Musa он возвращает строку, содержащую эти странные символы в начале моего вопроса.

5. Затем вам нужно будет исправить эту функцию