دفق الملف إلى المستخدم للتنزيل في Node / Express

0

أود أن أطلب منك المساعدة في REST API في Node / Express.

أنا أتصل بواجهة برمجة تطبيقات المورد للحصول على تصنيف بتنسيق PDF ، ثم أحتاج إلى إرسالها إلى مستخدم يتصل بواجهة برمجة التطبيقات.

أنا أستخدم request حزمة npm لاستدعاء API آخر. لقد حاولت أيضا node-fetch ولكن بدون حظ.

كود المثال:

retrieveLabel(req, res, next) {
  const options = {
    method: 'GET',
    url: 'apiUrl' + 'shipments/xxx/label',
    headers: {
      'cache-control': 'no-cache',
      authorization: xxxToken,
      'content-type': 'application/json'
    }
  };
  request(options, (error, response, results) => {
    // NO idea how to send it as reponse...


  });
}

في وحدة التحكم ، هناك استجابة بسلسلة من النوع ، بدءًا بشيء من هذا القبيل:

%PDF-1.4
%����
3 0 obj
<
</Type /XObject /Subtype /Image /Width 1171 /Height 1676 /ColorSpace /DeviceRGB /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /Interpolate false /Filter /FlateDecode /DecodeParms<
</Predictor 12 /Colors 3 /Columns 1171 >>
 /Length 61782 >>
stream
X���o�]�}'�;!Yl"�ɠh����x�H&�r�h�@(�3[ҋHK"�r+)K�q{kYL���fl���H�)��@�By�v�Ԭ\Z��3�-�5�Զ*PEJ���EU�����G�Ϲ�v���t��S��n���s�sn��>�y���1y��y��r'��Nrȝ��;�
 wݓ�Ν;�m��b�X,��b�X,s�D �MO?�܊,[email protected]&''w����b���266�H�%��_~��r�C���X,�e�K��������U��۲e���%+�������|���*��?pr �@�$7��In���r'��Nrȝ�0���o���|עʑ#Gn�������u�s��Z���ɓqe��|U >��9z�%�ٳw
....

1 إجابة

0

الخاص بك response من API هو دفق قابل للقراءة. الخاص بك res (وفقًا لطلب http من عميل موقع الويب الخاص بك) هو دفق قابل للكتابة. أسهل طريقة لتحقيق هدفك هي توجيه الدفق القابل للقراءة إلى الكتاب القابل للكتابة ، مثل هذا:

retrieveLabel(req, res, next) {
    //...
    request(options, (error, response, results) => {
        response.pipe(res);
    });
    //...

يمكنك الحصول على مزيد من المعلومات حول أنابيب الدفق من وثائق العقدة على الدفق.

:مؤلف
فوق
قائمة طعام