لن أقول الكثير من الهراء ، سأقوم فقط بنشر الكود لك. الرمز المحدد كما يلي:
رمز HTML كما يلي:
<Body> <input id = "fileId" type = "file" قبول = "video/*؛ capture = camera" onchange = "onFile (this)"> <input id = "btn" type = "button" value = "submit"> <script type = "text/javaScript"> var xhr document.getElementById ('fileid'). files [0]) ؛ xhr = new xmlhttprequest () ؛ xhr.open ("post" ، "http: // localhost: 8889/testup/upservlet") ؛ // xhr.setRequestHeader ("نوع المحتوى" ، "charset = utf-8") 4) {Alert ("تحميل دفق دفق البيانات نهاية") ؛ if (XHR.Status == 200) {var infor = xhr.responsetext ؛ Alert ("Server Side Response ="+Infor) ؛}}} </script> </body>يبدو رمز Java هكذا:
package com.yjm.up ؛ import java.io.file ؛ import java.io.fileOutputStream ؛ import java.ioexception ؛ import java.io.inputstream ؛ import java.util.list ؛ import javax.servlet.servletexception ؛ import javax.servlet.http.htttp. javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ import org.apache.commons.fileupload.fileItem org.apache.commons.fileupload.servlet.servletfileupload ؛ فئة public upservlet تمتد httpservlet {public void dopost (httpservletrequest request ، httpservledsponse response) rems servlexception ، ioexception {// get the the the seved file the the the the the the the the the the the the the the the the ولا يسمح للوصول المباشر من العالم الخارجي التأكد من أمان سلسلة الملفات التي تم تحميلها SavePath = this.getServletContext (). getRealPath ("/web-inf/upload") ؛ ملف جديد = ملف جديد (savepath) ؛ system.out.println ("test ...") ؛ {system.out.println (SavePath + "الدليل غير موجود ، يجب إنشاء") // إنشاء ملف الدليل. mkdir () ؛} diskfileItemFactory () ؛ // 2. قم بإنشاء تحميل ملف servletfileUpload upload = new servletfileUpload (المصنع) ؛ {// احصل على البيانات بالطريقة التقليدية ؛} // 4. استخدم محلل ServletFileUpload لتحليل البيانات التي تم تحميلها. تُرجع نتيجة التحليل قائمة <IberItem>. يتوافق كل ملف fileItem مع عنصر إدخال قائمة النماذج من قائمة النماذج <IRTIM> قائمة = upload.parserequest (request) ؛ لـ (fileitem item: list) {// إذا تم تغليف بيانات عنصر الإدخال العادي في fileItem if (item.isformfield ()) {string name = item.getfieldname () ؛ string (value.getBytes ("ISO8859-1") ، "UTF-8") ؛ System.out.println (name + "=" + value) ؛} آخر {// إذا كان عنصر الملف يلف الملف المحمّل // get the looded ame ، string filename = item.getName () ؛ filename.trim (). يساوي ("")) {متابعة ؛} // ملاحظة: تختلف أسماء الملفات المقدمة بواسطة متصفحات مختلفة. تقوم بعض المتصفحات بإرسال الملفات ذات المسارات ، مثل: // c: /a/b/1.txt ، وبعضها مجرد أسماء ملفات بسيطة ، مثل: 1.txt // معالجة جزء المسار من اسم ملف الملف الذي تم الحصول عليه تم الحصول عليه فقط ، يتم الاحتفاظ بملف ملف filenment = filense. في = item.getInputStream () ؛ // قم بإنشاء ملف FileOutPutStream Out = جديد fileOutputStream (SavePath + "//" + اسم الملف) ؛ // إنشاء Buffer Byte Buffer [] = New Byte [1024 * 1024] ؛ FileOutputStream (SavePath + "//" + اسم الملف) ؛ // قم بإنشاء عازلة بايت عازلة [] = New Byte [1024 * 1024] ؛ // معرف تحديد ما إذا كانت البيانات الموجودة في دفق الإدخال قد تمت قراءة int int = 0 ؛ // loop لقراءة دفق الإدخال في المخزن المؤقت. (len = in.read (buffer))> 0 يعني أنه لا يزال هناك بيانات في حين ((len = in.read (buffer))> 0) {// استخدم دفق إخراج FileOutputStream لكتابة البيانات في العازلة إلى الدليل المحدد (savepath + "// دفق الإخراج Out.close () ؛ // حذف الملف المؤقت الذي تم إنشاؤه عند معالجة تحميل الملف. delete () ؛ message = "تحميل الملف بنجاح!" ؛}}} catch (استثناء e) {message = "فشل تحميل الملف!" ؛تم تحميل حزمة Java المستخدمة أكثر من 1G
المشاع filepload -1.2.1.jar
العموم-IO-1.3.2.jar
//xhr.setRequestHeader("Content-type" ،"application/octet-stream ؛ Char.charset=UTF-8 ") ؛ لا يمكن إضافة هذا