Amir Alsaeed نشر 8 يونيو 2021 أرسل تقرير مشاركة نشر 8 يونيو 2021 (معدل) لدي الكود التالي أستطيع من خلاله الحصول على ملف 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(); }); ماهي الطريقة الصحيحة لتنفيذ ذلك؟ تم التعديل في 8 يونيو 2021 بواسطة Amir Alsaeed اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
1 Sam Ahw نشر 8 يونيو 2021 أرسل تقرير مشاركة نشر 8 يونيو 2021 لقد نسيت تحديد نوع الرد response الخاص بالملف (responseType) من نمط blob. ولذلك قد يظهر الملف بشكل معطوب أو لا يتم تحميله نهائياً. لحل المشكلة يمكن تعديل الكود لديك وإضافة التالي: const options = { method: 'POST', responseType: 'blob', <=== ضرورية عند التعامل مع الملفات data: formData, url: '/your_api_link', }; return myAPI.request(options); 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Salah Eddin Beriani2 نشر 8 يونيو 2021 أرسل تقرير مشاركة نشر 8 يونيو 2021 عادة عند تخزين الملفات في السيرفر يكونون في مجلد مثلا 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> 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Amir Alsaeed
لدي الكود التالي أستطيع من خلاله الحصول على ملف 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رابط هذا التعليق
شارك على الشبكات الإجتماعية
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.