سؤال

أنا إعطاء المستخدم رابط تحميل ملف csv فقط باستخدام

Click <a href="report.csv">here</a> to download your file.

هذا النص و الرابط يتم عرضها في نافذة صغيرة - ارتفاع 100 عرض 400.

إذا كان المستخدم بالنقر فوق "حفظ" - ثم لا توجد مشكلة ثم يتم حفظ الملف إلى أي مكان يختارونه

إذا على الرغم من أنها اختيار "فتح" ملف csv ثم يتم عرضها في نافذة منبثقة.الذي يسن ؛ ر ما أريد - أنا أفضل excel لفتح وعرض الملف في excel أو حتى تعطيل الزر "فتح" قد يكون خيار ممكن.

أي أفكار كيف يمكن تحقيق أيضا ؟

شكرا

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

المحلول

وأفترض أن تفتحه أن مربع منبثق باستخدام بعض جافا سكريبت .. لذلك أود أن أقترح على لا تظهر / فتح صغيرة "تحميل" مربع منبثق الخاص بك، وبدلا من إظهار هذا الرابط على صفحة ويب. لذلك عندما ينقر أحدهم على الرابط إجبار المتصفح لتحميل الملف وإذا كانوا يرغبون في فتحه في وسعهم، وربما الحصول على الرأي الذي هو واسعة كما من خلال متصفح في حجم النوافذ.

و// فقط على سبيل المثال، لإجبار تحميل ملف مضغوط، وإرسال رؤوس ك

// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");

نصائح أخرى

وأنت لا تملك سلطة على إعدادات المستخدمين مثل التي يتم فتح نوع الملف الذي التطبيق. سيكون لديهم للذهاب إلى إعداداتها وتغيير اقتران الملف. ومع ذلك، نضع في اعتبارنا أن الجميع لا تمت إكسل تثبيت، حتى انها ليست فكرة جيدة لإجبار المستخدم لفتح ملف CSV في هذا التطبيق معين.

وكما أنني لا أعتقد أنه يمكنك تعطيل خيار فتح، وأملت هذا أيضا تكوين متصفح الويب ما اذا كانت سوف أو لن يتم عرض نافذة أو أنها ستطلق التطبيق المقترن مباشرة الخ ... يبدو أنك " إعادة من الحظ في حالة معينة.

وأعتقد أن هذا هو مستوى OS والتي لا يمكن تغييرها.

ونصف حل واحد هو إضافة target="_blank" إلى العلامة. وبهذه الطريقة، عندما يقوم المستخدمون اختيار الخيار 'فتح'، على الأقل سيتم فتح الملف في الجديدة (ملء الشاشة، أو على الأقل يمكن تغيير حجم) نافذة.

وبخلاف ذلك، لا يمكنك تغيير السلوك من النافذة، كما ذكر ceejayoz.

  • تأكد من أنك لا تفعل أي إخراج آخر قبل هذه النقطة ،
  • بناء csv الخاص بك سلسلة وتخزينها في $csvString
  • تعطيه المناسبة الملف في $csv_filename
  • رؤوس ينبغي أن تخبر المتصفح لتحميله في excel

    header("Cache-Control: maxage=1");

    header("Pragma: public");

    header("Content-Type: application/vnd.ms-excel");

    header("Expires: 0");

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

    header("content-disposition: attachment;filename=$csv_filename");

    echo $csvString;

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top