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

السؤال

نشر (معدل)

لدي الكود التالي أستطيع من خلاله الحصول على ملف excel المصدّر من لارافل من خلال blade:

return (new NewsExport())->download($file_name);

ولكنني أحاول الحصول على الملف من خلال axios في تطبيق react، فحاولت تنفيذ الكود التالي لكن يتم تحميل الملف معطوب ولا يعمل بالشكل الصحيح:

let response = await myApi.exportList(payload).then(response => {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'myexcelfile.xlsx');
    document.body.appendChild(link);
    link.click();
});

ماهي الطريقة الصحيحة لتنفيذ ذلك؟

تم التعديل في بواسطة Amir Alsaeed

Recommended Posts

  • 1
نشر

لقد نسيت تحديد نوع الرد response الخاص بالملف (responseType) من نمط blob. ولذلك قد يظهر الملف بشكل معطوب أو لا يتم تحميله نهائياً.

لحل المشكلة يمكن تعديل الكود لديك وإضافة التالي:

const options = {
    method: 'POST',
    responseType: 'blob', <=== ضرورية عند التعامل مع الملفات
    data: formData,
    url: '/your_api_link',
};

return myAPI.request(options);

 

  • 0
نشر

عادة عند تخزين الملفات في السيرفر يكونون في مجلد مثلا storage واذا كان السيرفر مثلا يشتغل على https://website.com سيكون رابط التحميل

https:/website.com/storage/file.xlsx

في الclient  يمكن استخدام العنصر a للتحميل باستعمال الرابط

   <a
     target="_blank"
     rel="noreferrer"
     href="https://website.com/storage/file.xlsx"
   >
      تحميل
   </a>

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...