لا يمكن تنزيل الملف في IE7 ولكن لا توجد أي مشكلة في Firefox وChrome وما إلى ذلك..؟

StackOverflow https://stackoverflow.com/questions/117372

سؤال

لدي برنامج نصي يتلقى عنوان URL مشفرًا ومن ثم يقوم بإنشاء تنزيل، والمساواة الأكثر أهمية في البرنامج النصي هي كما يلي:

$MimeType = new MimeType();
$mimetype = $MimeType->getType($filename);
$basename = basename($filename);
header("Content-type: $mimetype");
header("Content-Disposition: attachment; filename=\"$basename\"");
header('Content-Length: '. filesize($filename));
if ( @readfile($filename)===false ) {
  header("HTTP/1.0 500 Internal Server Error");
  loadErrorPage('500');
}

تعمل التنزيلات بشكل سحري في أي متصفح باستثناء IE، لقد رأيت مشكلات تتعلق برؤوس "no-cache" لكنني لا أرسل أي شيء من هذا القبيل، فهم يتحدثون عن أحرف utf-8، لكن لا يوجد أي شيء utf-8 characters(ولا يحتوي اسم الملف $ على أي أحرف utf-8 أيضًا).

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

المحلول

هذا الموقع لديه مشكلة مماثلة لك في IE6.كي تختصر:

يرسل session_start() بشكل افتراضي رأس التحكم في ذاكرة التخزين المؤقت بما في ذلك "no-store".يأخذ Internet Explorer هذا حرفيًا بعض الشيء ، ولكن ليس لديه معالجة خطأ مناسبة للحالة ، ونتيجة لذلك تنفجر بشكل خفي عند محاولة حفظ صفحة الإخراج على القرص.

قبل Session_start () ، أضف "Session_cache_limiter ('none') ؛" ، أو ابحث عن هذه الوظيفة وتعديل المحدد حسب الاقتضاء (ربما يكون "الخاص" أقرب إلى العلامة).

أدرك أن مقتطف الشفرة الذي نشرته لا يتضمن اتصالاً بـ session_start();, ، لكنني اعتقدت أنني سأشارك هذا الحل المحتمل في حالة اتصالك به ولم تظهره لنا.

نصائح أخرى

لقد قمت بحلها عن طريق إرسال الرؤوس

header('Pragma: public');
header('Cache-Control: max-age=0');

لم أكن أعلم أن session_start() يرسل الرؤوس بمفرده.

لقد وجدت الإجابة في قسم التعليقات: خطأ:يتعذر على Internet Explorer تنزيل اسم الملف من WebServer

استخدم هذا

في IE7 Browser ، انتقل إلى خيار الإنترنت-> الأمان ---> المستوى المخصص ---> التنزيلات ثم تمكين المطالبة التلقائية لتنزيل الملف.

هذا سوف يحل المشكلة.

نأمل أن يساعد هذا

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