আমার একটি পৃষ্ঠা রয়েছে যা ব্যবহারকারীকে গতিময় উত্পন্ন ফাইল ডাউনলোড করতে দেয়। এটি উত্পন্ন করতে দীর্ঘ সময় নেয়, সুতরাং আমি একটি "অপেক্ষার" সূচকটি দেখাতে চাই। সমস্যাটি হ'ল, ব্রাউজারটি কখন ফাইলটি পেয়েছে তা কীভাবে সনাক্ত করব তা আমি বুঝতে পারি না, তাই আমি সূচকটি আড়াল করতে পারি।
আমি একটি গোপন আকারে অনুরোধ করছি, যা সার্ভারে পোস্ট করে এবং এর ফলাফলের জন্য একটি লুকানো আইফ্রেমকে লক্ষ্য করে। এটি তাই আমি ফলাফল সহ পুরো ব্রাউজার উইন্ডো প্রতিস্থাপন না। ডাউনলোডটি সম্পূর্ণ হওয়ার পরে এটি চালু হবে এই আশায় আমি ইফ্রামে একটি "লোড" ইভেন্টের জন্য শুনি।
আমি ফাইলটির সাথে একটি "বিষয়বস্তু-বিভাজন: সংযুক্তি" শিরোনামটি ফিরিয়ে দিই, যার ফলে ব্রাউজারটি "সংরক্ষণ করুন" ডায়ালগটি দেখায়। তবে ব্রাউজারটি যদি ইফ্রেমে কোনও "লোড" ইভেন্ট চালায় না।
আমি চেষ্টা করেছি এমন একটি পদ্ধতির মধ্যে বহু অংশের প্রতিক্রিয়া ব্যবহার করা। সুতরাং এটি একটি খালি HTML ফাইল, পাশাপাশি সংযুক্ত ডাউনলোডযোগ্য ফাইল প্রেরণ করবে would উদাহরণ স্বরূপ:
Content-type: multipart/x-mixed-replace;boundary="abcde"
--abcde
Content-type: text/html
--abcde
Content-type: application/vnd.fdf
Content-Disposition: attachment; filename=foo.fdf
file-content
--abcde
এটি ফায়ারফক্সে কাজ করে; এটি খালি এইচটিএমএল ফাইল গ্রহণ করে, "লোড" ইভেন্টটিকে গুলি করে, তারপরে ডাউনলোডযোগ্য ফাইলের জন্য "সংরক্ষণ করুন" ডায়ালগটি দেখায়। তবে এটি IE এবং সাফারিতে ব্যর্থ হয়; IE "লোড" ইভেন্টটিকে আগুন ধরিয়ে দেয় তবে ফাইলটি ডাউনলোড করে না, এবং সাফারি ফাইলটি ডাউনলোড করে (ভুল নাম এবং বিষয়বস্তুর ধরণ সহ), এবং "লোড" ইভেন্টটিকে আগুন দেয় না।
ফাইল তৈরি শুরু করার জন্য একটি কল করার জন্য একটি ভিন্ন পদ্ধতি হতে পারে, তারপরে এটি প্রস্তুত না হওয়া পর্যন্ত সার্ভারটি পোল করুন, তারপরে ইতিমধ্যে তৈরি ফাইলটি ডাউনলোড করুন। তবে আমি সার্ভারে অস্থায়ী ফাইল তৈরি করা এড়াতে চাই।
কারও কি আরও ভাল ধারণা আছে?