Saya tidak akan mengatakan banyak omong kosong, saya hanya akan memposting kode kepada Anda. Kode spesifiknya adalah sebagai berikut:
Kode HTML adalah sebagai berikut:
<body> <input id = "fileid" type = "file" accept = "video/*; capture = kamera" onchange = "onFile (this)"> <input id = "btn" type = "tombol" value = "kirim"> <script type = "text/javascript"> var xhr; function onfile (file) {var script = "Text/JavaScript"> var xhr; function onFile (file) {var script = "form =); document.geteLementById ('fileId'). File [0]); xhr = xmlhttpRequest baru (); xhr.open ("post", "http: // localhost: 8889/testup/upservlet"); // xhr.setRequestHeader ("tipe konten", "charset = utf-8"); xhr.send (fd); xhr.onReadystatechange = ProcessResponse;} function Proses () () {xhreAdyStateChange = ProcessResponse;} Fungsi Fungsi () () {xhreadySteChange = ProcessResponse;} Fungsi Fungsi () () {xhreAdyR.READEDEPREYSE; ProcessResponse;} function Process; 4) {waspada ("Unggah ujung aliran data akhir"); if (xhr.status == 200) {var infor = xhr.responsetext; alert ("Server sisi respons ="+infor);}}} </script> </body>Kode Java terlihat seperti ini:
Paket com.yjm.up; import java.io.file; import java.io.fileoutputStream; import java.io.ioException; import java.io.inputStream; impor java.util.list; import javax.servlet.servletexception; impor javax.servlet.htp.servlet.servletexception; impor javax.servlet.htp.servlet javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletResponse; import org.apache.commons.fileupload.fileitem; import org.apache.commons.fileupload.disk.daKfileitem; org.apache.commons.fileupload.servlet.servletfileupload; kelas publik UpServlet memperluas httpservlet {public void dopost (httpservletRequest permintaan, httpservleteponse response) dari servletexception, ioException {// get the saveadore) direktori, dan tidak mengizinkan akses langsung dari dunia luar untuk memastikan keamanan string file yang diunggah savePath = this.getSerVletContext (). getRealpath ("/web-inf/unggah"); file file = file baru (savePath); System.out.println ("uji ...");//Tentukan apakah direktori yang disimpan dari saved dari unggahan.println ("uji ...");//Tentukan apakah disimpan dari save saved the unggah. ! File.isDirectory ()) {System.out.println (savePath + "Direktori tidak ada, perlu dibuat"); // Buat file direktori.mkdir ();} // pesan tersebut meminta string pesan = ""; coba {// menggunakan fabrikasi fabrikasi APACHECORY untuk memproses langkah -langkah unggah file: // 1. 1. Factory = New DiskFileItemFactory (); // 2. Buat file unggah parser servletfileupload unggah = servletfileupload baru (pabrik); // selesaikan apakah tekan yang terkejut. {// Dapatkan data dengan cara tradisional;} // 4. Gunakan parser servletfileupload untuk menguraikan data yang diunggah. Hasil parsing mengembalikan koleksi daftar <FILEITEM>. Setiap fileItem sesuai dengan item input dari daftar formulir Formulir <FILEITEM> DAFTAR = UEDLOAD.PARSEREQUEST (permintaan); untuk (item FileItem: daftar) {// Jika data item input normal dienkapsulasi dalam fileItem if (item.isFormField ()) {string name = item.getFieldName (); // Selesaikan masalah data input input newel = items.getString ("UTF-8"); String (value.getbytes ("iso8859-1"), "utf-8"); System.out.println (name + "=" + value);} else {// Jika item file merangkum file yang diunggah // unggah (kupu-kupu (filename sang filename = item.getName (); system.out.outlip/ arive yang diunggah, filleName = Item.getName (); System.Out.Ont. filename.trim (). equals ("")) {lanjutan;} // Catatan: Nama file yang dikirimkan oleh browser yang berbeda berbeda. Beberapa browser mengirimkan file dengan jalur, seperti: // c: /a/b/1.txt, dan beberapa hanyalah nama file sederhana, seperti: 1.txt // memproses bagian jalur dari nama file dari file yang diunggah, hanya file yang diunggah ("//////filenpum yang diunggah (filename.lastindexof (" InputStream in = item.getInputStream (); // Buat file output file output fileOutputStream out = FileOutputStream baru (savePath + "//" + fileName); // Buat buffer buffer byte buffer [] = byte baru [1024 * 1024]; // Buat buffer byte buffer [] = byte baru [1024 * 1024]; // Buat buffer byte buffer [] = new byte [1024 * 1024]; // Buat buffer byte buffer [] = new byte [1024 * 1024]; = FileOutputStream baru (savePath + "//" + filename); // Buat buffer byte buffer [] = byte baru [1024 * 1024]; // Pengidentifikasi menentukan apakah data dalam aliran input telah dibaca adalah int len = 0; // loop untuk membaca aliran input ke dalam buffer. (len = in.read (buffer))> 0 berarti bahwa masih ada data di dalam while ((len = in.read (buffer))> 0) {// Gunakan aliran output FileOutputStream untuk menulis data dalam buffer ke direktori yang ditentukan (savePath + "//" // + filename) out.write, 0, 0, len); in.close (); // tutup aliran output out.close (); // hapus file sementara yang dihasilkan saat memproses file unggahan item.delete (); pesan = "File berhasil mengunggah!";}}} catch (Exception e) {message = "File unggah gagal!"; e.printstacktrace ();} request.setAttribute ("pesan", pesan); request.getRequestDispatcher ("/message.jsp"). Forward (request, response);}}Paket Java yang digunakan diunggah lebih dari 1g
Commons-Fileupload-1.2.1.jar
commons-io-1.3.2.jar
//xhr.setRequestheader("Content-Type" ,"Applikasi/octet-stream;charset=Utf-8 "); Ini tidak bisa ditambahkan