سؤال

في تطبيق ويب أعمل عليه، يمكن للمستخدم النقر على رابط إلى ملف CSV. لا يوجد مجموعة رأس لنوع MIME، وبالتالي فإن المتصفح يجعله مجرد نص. أرغب في إرسال هذا الملف كملف .csv، لذلك يمكن للمستخدم فتحه مباشرة مع Calc، Excel، Gnumeric، إلخ.

header('Content-Type: text/csv');
echo "cell 1, cell 2";

يعمل الرمز هذا كما هو متوقع على جهاز الكمبيوتر الخاص بي (أليس كذلك كيف هو دائما؟) ولكن لا يعمل على كمبيوتر آخر.

متصفحي هو بناء ليلي من FF 3.0.1 (على Linux). المتصفحات التي لم تعمل فيها كانت IE 7 و FF 3.0 (على Windows)

هل هناك أي quirks أنا غير مدركين؟

هل كانت مفيدة؟

المحلول

يمكنك محاولة إجبار المتصفح على فتح مربع حوار "حفظ باسم ..." من خلال القيام بشيء ما:

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";

والتي يجب أن تعمل عبر معظم المتصفحات الرئيسية.

نصائح أخرى

أنت لا تحدد لغة أو إطار، ولكن يتم استخدام الرأس التالي لتنزيلات الملفات:

"Content-Disposition: attachment; filename=abc.csv"

مع Internet Explorer، غالبا ما يتعين عليك تحديد Pragma: رأس عام أيضا للتنزيل للعمل بشكل صحيح ..

header('Pragma: public');

فقط 2 2 سنتات ..

يمكن استخدام هذا الرمز لتصدير أي ملف، بما في ذلك CSV

// application/octet-stream tells the browser not to try to interpret the file
header('Content-type: application/octet-stream');
header('Content-Length: ' . filesize($data));
header('Content-Disposition: attachment; filename="export.csv"');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top