في تطوير الويب ، غالبًا ما يكون من الضروري تطوير وحدة "التنزيل". هنا مثال بسيط.
على جانب الخادم ، استخدم Java لتطوير:
requestmapping (value = "download.html" ، method = requestMethod.get) تنزيل public void (String ResourceId ، httpservletrequest request ، httpservletponse response) {response.setContentType ("charset = utf-8") ؛ ملف الملف = ملف جديد (مسار) ؛ استجابة. BufferedInputStream BIS = NULL ؛ bufferedoutputstream bos = null ؛ OutputStream FOS = NULL ؛ inputStream Fis = NULL ؛ حاول {fis = جديد fileInputStream (file.getabsolutepath ()) ؛ BIS = جديد bufferedInputStream (FIS) ؛ fos = response.getOutputStream () ؛ BOS = جديد bufferedoutputstream (FOS) ؛ int bytesread = 0 ؛ Byte [] Buffer = New Byte [5 * 1024] ؛ بينما ((bytesread = bis.read (buffer))! = -1) {bos.write (buffer ، 0 ، bytesread) ؛ } bos.flush () ؛ } catch (e e) {} أخيرًا {try {bis.close () ؛ bos.close () ؛ fos.close () ؛ fis.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}عندما نطلب هذا العنوان على الواجهة الأمامية ، يجد الخادم أولاً الملف ، ويقوم بتعيين رأس الاستجابة ، ثم يقوم بإخراجه إلى جانب المتصفح من خلال الدفق.
إذا وجد المتصفح في الرأس أن جسم الاستجابة عبارة عن ملف دفق ، فسيقوم تلقائيًا باستدعاء نافذة حفظ كإجراء على المستخدم حفظ التنزيل.
المفتاح هنا هو خاصية رأس Disposition. يعد تحديد المحتوى امتدادًا لبروتوكول MIME للإشارة إلى كيفية السماح للعميل بعرض ملف المرفق.
يمكن ضبطه على قيمتين:
INLINE // فتح عبر الإنترنت
المرفق // تحميل كمرفق
هنا قمنا بتعيين القيمة على المرفق ، بحيث يمكن الاعتراف بها كمرفق وتنزيله.
يتحدث أعلاه عن كيفية الكتابة إلى جانب الخادم ، والمحادثات التالية حول كيفية طلب الواجهة الأمامية.
هناك ثلاث طرق لطلب الواجهة الأمامية:
1.
<form action = 'download.html' method = 'post'> <input type = 'submit'/> </form>
2.iframe
var iframe = "<iframe style = 'display: none' src = 'download.html'> </frame>" body.append (iframe) ؛
عندما يتم إلحاق IFRAME بالجسم ، سيتم طلب رابط التنزيل تلقائيًا.
3. فتح
window.open ("download.html") ؛