اذهب إلى المحتوى

السؤال

نشر

أنا أستخدم React وReact-router لعمل SPA ولدي API يرجع لي ملف في شكل response، كيف أقوم بتحميل الملف لدى المستخدم بدون أن يتم فتح تبويب جديد لعرض الملف؟ أعلم أنه يجب أن يتم عمل endpoint يرجع response مع header مثل Content-Type و Content-Disposition لكن ليس لدي تحكم في الـ  API لذلك أريد أن أقوم بذلك من خلال React

Recommended Posts

  • 1
نشر

إن كنت تعني أنك تقوم برسم رابط للملف ولكن الرابط يعرض محتوى الملف بدلاً من تحميله حينها يمكنك استعمال خاصية download كالتالي:

<a href="fileurl" download></a>

وجود خاصية download بحد ذاتها يخبر المتصفح بأن يحمل الملف بدلاً من عرض محتواه، هذه الخاصية تعمل في كل المتصفحات ما عدا IE، بالنسبة للـIE فلا يوجد حل مع اﻷسف.

بالطبع يمكنك إسناد نص لخاصية download هكذا:

<a href="fileurl" download="filename.pdf"></a>

حينها عند الضغط على الرابط سيتم تحميله باسم filename.pdf.

إن كنت تعني شيئاً آخر فأرجو منك توضيح مقصدك.

  • 0
نشر

لقد واجهت مشكلتك قبل الان وكل ما أعرفه عن تحميل الملفات أنه عند استخدام مثلا 

<Link to="file/file.pdf" download target="_blank"></Link>;

وللتنويه مجلد file يجب أن يكون في public يحمل الملف عادي دون أن يفتح في المتصفح لكن بالنسبة لملف ليس محلي أي يقبع في خادم أخر يجب عليك استخدام عنصر a 

<a href="https://example.com/file.pdf" download ></a>;

دون استخدام target blank

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...