بدء تشغيل ملف التشغيل التلقائي بعد تقديم النموذج

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

سؤال

لدي نموذج ويب يستخدم المستخدمون عبر الإنترنت. عند الضغط على إرسال، سيبدأ تنزيل ملف لهم.

في الوقت الحالي، أعالج تقديم النموذج وإنشاء ملف مناسب للمستخدم وإطلاقه مع رؤوس مناسبة. على سبيل المثال ...

header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");

ومع ذلك، نظرا لأن هذا يبدأ التنزيل على الفور، يتم ترك النموذج الأصلي على الشاشة بواسطة المستعرض.

أود حقا أن أذهب إلى شاشة "شكرا لك" بمجرد اكتمال التنزيل (أو قبل بدء التنزيل). أعلم أنه من الممكن، لأن كل موقع تنزيل تقريبا تزوره يفعل هذا (عادة لضختك مليئة بالإعلانات قبل بدء التنزيل).

لذلك، كيف يمكنني عرض شاشة "شكرا لك" التي تبدأ التنزيل بعد ثانية؟

كيف اقترح أي حل تأثير سلوك الزر الخلفي، لأنني لا أريد تنزيل الملف مرة أخرى دون إعادة تعبئ النموذج؟

أنا أستخدم PHP على الخادم ويمكن الاعتماد على JavaScript (و jquery) متاحا على العميل.

شكرا لك.

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

المحلول

يمكنك إرسال النموذج إلى شكرا لك وثيقة ووضع هناك meta تحديث إلى ملف تنزيل:

<meta http-equiv="refresh" content="3;url=download.php">
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p>

نصائح أخرى

أضف صفحة ثانية تقول شيئا "شكرا لك، ستبدأ تحميلك في بضع ثوان" ويقوم بتشغيل التنزيل باستخدام JavaScript:

$(document).ready(function(){
  window.setTimeout(function(){
    window.location = 'http://yourdownloadhost.com/file.zip';
  }, 1500);
});

أو استخدام إعادة توجيه التعريف.

يمكنك إدراج iFrame مخفي في صفحتك وأرسل النموذج الخاص بك إلى هذا iFrame.

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