Mengunggah file web menggunakan postingan. Tidak seperti Formulir Posting mengirimkan, mengunggah file memerlukan pengaturan atribut enctype formulir ke multipart/form-data. Karena file yang diunggah akan relatif besar, parameter ini perlu diatur untuk menentukan bahwa browser menggunakan unggahan biner. Jika tidak diatur, default properti enctype ke aplikasi/x-www-form-urlencoded. Menggunakan browser akan menggunakan ASCII untuk mengirim data ke server, menghasilkan kegagalan untuk mengirim file.
Untuk mengunggah file, gunakan domain file (<input type = 'file'/> dan atur enctype formulir ke multipart/form-data.
Halaman Upload Klien ditampilkan pada gambar:
Kodenya adalah sebagai berikut:
unggah.html
<! Doctype html public "-// w3c // dtd html 4.01 transisi // en"> <html> <head> <title> unggah file </title> <meta http-equiv = "kata kunci" content = "KeyWord2, KeyWord, kata kunci" meta http-meta htoV " http-equiv = "konten-tipe" content = "text/html; charset = utf-8"> <tautan rel = "stylesheet" type = "text/css" href = "css/style.css"> </head> <omform Action = "servlet/unggah/unggah" Method = "POST" POST "POST" POST "MULOPLET =" MULOPLET/MULOPLET "MULOPLET" align = "center"> <br/> <fieldset> <Gegend> Mengunggah file </tegend> <br/> <div class = 'line'> <div align = 'left'> unggah file 1 </div> <div align = 'left'> <input type = "file" name = "file1"> </div> </div> div class = 'line =' name = "file1"> </div> </div> div class = 'line =' name = "file1"> </div> </div> div class = 'line =' name = "file1"> </div> </div> div class = 'line =' name = "file1"> </Div> </div> div class = 'line =' name = 'file'> </Div> </Div> Div Class = ' Align = 'Left'> Unggah File 2 </Div> <Div Align = 'Left'> Align = 'Left'> <input type = "file" name = "file2"> </div> </div> <div class = 'line'> <div align = 'left'> unggah file 1 </div> <Div Align = 'kiri'> <input = "TEPPACIP =" </Div> <Div Align = 'kiri'> <input = " class = 'line'> <div align = 'kiri'> Unggah Deskripsi File 2 </div> <div align = 'kiri'> <input type = "text" name = "description2"> </div> </div> div class = 'line'> <Div Align = 'Left'> Unggah File 2 </Div> <Div align = 'Left'> </Divit = 'LIFIT'> UPLOAD FILE DESKRIPSI 2 </DIV> <DIV ALIGN = 'LIFT'> </DIVIT = 'ONBIT'> </Divip '</Div ALIGN ='> </Div> Div> <Div align = 'Left'> </Divit> value = "Unggah file"> </div> </div> </fieldset> </div> </form> </body> </html>
Kode yang dijalankan oleh klien sangat sederhana, dan server lebih rumit. Untuk mendapatkan konten, permintaan yang diajukan oleh browser harus diuraikan sesuai dengan format yang ditentukan oleh protokol HTTP.
Lebih merepotkan untuk menguraikan aliran biner. Banyak perpustakaan kelas telah menyelesaikan pekerjaan ini. Misalnya, Smartupload dan Apache Commons Fileupload.Smartupload adalah pustaka kelas komersial. Data disimpan dalam memori selama penguraian proses permintaan, sehingga lebih cepat, tetapi overflow memori terjadi saat mengunggah file yang lebih besar. Apache Commons Fileupload adalah perpustakaan kelas sumber gratis dan terbuka. Beberapa kerangka kerja seperti Struts mengintegrasikan perpustakaan kelas file Umum Apache Umum untuk mengimplementasikan unggahan file.
Seperti yang ditunjukkan pada gambar:
Kodenya adalah sebagai berikut:
Paket com.Helloweenvsfei.servlet; import java.io.file; impor java.io.fileoutputstream; import java.io.ioException; import java.io.inputStream; import java.outputstream; impor java.io.printwriter; impor java.net. javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; impor org.apomashe.common.common.commons.commons.commons.commons.commons.commons.commons.commons.commons.commons.commons.commons.commons.commons.commons.commons org.apache.commons.fileupload.fileItem; impor org.apache.commons.fileupload.fileuploadException; kelas publik unggahanServlet memperluas httpservlet {private static final long serialversionuid = 752302473721832088l; public void doGet (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {response.setcharacterencoding ("UTF-8"); response.getWriter (). println ("Harap unggah file di pos"); } @Suppresswarnings ("Uncecked") public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {file file1 = null, file2 = null; String description1 = null, description2 = null; response.setcharacterencoding ("UTF-8"); response.setContentType ("Teks/html"); Printwriter out = response.getWriter (); out.println ("<! Doctype html public/"-// w3c // dtd html 4.01 transisi // en/">"); out.println ("<Html>"); out.println ("<head> <title> a servlet </iteme> </head>"); out.println ("<tautan rel = 'stylesheet' type = 'text/css' href = '../css/style.css'>"); out.println ("<body>"); out.println ("<div align = center> <br/>"); out.println ("<fieldset style = 'width: 90%'> <segend> Mengunggah file </fegend> <br/>"); out.println ("<div class = 'line'>"); out.println ("<div align = 'left' class = 'leftDiv'> Unggah log: </div>"); out.println ("<div align = 'kiri' class = 'rightDiv'>"); // Gunakan objek diskfileupload untuk parse permintaan diskfileupload diskfileupload = DiskFileUpload baru (); coba {// Tempatkan hasil parsed di daftar daftar <fileitem> list = diskfileupload.parserequest (request); out.println ("Trace melalui semua fileitem ... <br/>"); // Lacak melalui daftar semua fileItem di FileItem FileItem: list) {if (fileitem.isFormField ()) {// Jika itu adalah bidang teks jika ("deskripsi1" .equals (fileitem.getFieldName ())) {// jika nama fileitem adalah deskripsi1 out.println ("travel to description1 ... deskripsi1 = string baru (fileitem.getString (). getBytes (), "UTF-8"); } if ("description2" .equals (fileitem.getFieldName ())) {// Jika fileItem adalah nama deskripsi2 out.println ("Travel to Description2 ... <br/>"); deskripsi2 = string baru (fileitem.getString (). getBytes (), "UTF-8"); }} else {// sebaliknya, untuk bidang file if ("file1" .equals (fileitem.getFieldName ())) {// Objek file yang dibangun oleh file path file klien remoteFile = file baru (string baru (fileitem.getName (). getBytes (), "UTF-8")); out.println ("Travel to File1 ... <br/>"); out.println ("Lokasi File Klien:" + RemoteFile.getAbsolutePath () + "<br/>"); // File sisi server, tempatkan di file folder unggah1 = file baru (this.getSerVletContext (). GetRealPath ("lampiran"), remoteFile.getName ()); file1.getParentFile (). mkdirs (); file1.createNewFile (); // Tulis file dan tulis konten file fileItem ke dalam file inputStream ins = fileitem.getInputStream (); OutputStream ous = FileOutputStream baru (file1); coba {byte [] buffer = byte baru [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ("Simpan File" + file1.getAbsolutePath () + "<br/>"); } akhirnya {ous.close (); INS.CLOSE (); }} if ("file2" .equals (fileitem.getFieldName ())) {// File objek yang dibangun oleh file file klien file remoteFile = file baru (string baru (fileitem.getName (). getBytes (), "UTF-8")); out.println ("Travel to File2 ... <br/>"); out.println ("Lokasi File Klien:" + RemoteFile.getAbsolutePath () + "<br/>"); // File sisi server, masukkan file folder unggah2 = file baru (this.getSerVletContext (). GetRealPath ("lampiran"), remoteFile.getName ()); file2.getParentFile (). mkdirs (); file2.createNewFile (); // Tulis file dan tulis konten file fileItem ke file inputStream ins = fileitem.getInputStream (); OutputStream ous = FileOutputStream baru (file2); coba {byte [] buffer = byte baru [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ("Simpan File" + File2.getAbsolutePath () + "<br/>"); } akhirnya {ous.close (); INS.CLOSE (); }}}} out.println ("Permintaan parsing selesai"); } catch (fileuploadexception e) {// todo auto-generated catch block e.printstacktrace (); } out.println ("</div>"); out.println ("<div align = 'left' class = 'leftDiv'> file1: </div>"); out.println ("<div align = 'kiri' class = 'rightDiv'>"); out.println ("<a href = '" + request.getContextPath () + "/lampiran/" + file1.getName () + "' target = _blank>" + file1.getName () + "</a>"); out.println ("</div>"); out.println ("</div>"); } if (file2! = null) {out.println ("<div class = 'line'>"); out.println ("<div align = 'left' class = 'leftDiv'> File2: </div>"); out.println ("<div align = 'kiri' class = 'rightDiv'>"); out.println ("<a href = '" + request.getContextPath () + "/lampiran/" + urlencoder.encode (file2.getname (), "UTF-8") + "' target = _blank>" + file2.getName () + "</a>"); out.println ("</div>"); out.println ("</div>"); } out.println ("<div class = 'line'>"); out.println ("<div align = 'left' class = 'leftDiv'> description1: </div>"); out.println ("<div align = 'kiri' class = 'rightDiv'>"); out.println ("<div align = 'kiri' class = 'rightDiv'>"); out.println ("<div align = 'left' class = 'leftDiv'> description2: </div>"); out.println ("<div align = 'kiri' class = 'rightDiv'>"); out.println (deskripsi2); out.println ("</div>"); out.println ("</div>"); out.println ("</fieldset> </div>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Efek operasi program ditunjukkan pada gambar:
Artikel ini telah dikompilasi menjadi "Ringkasan Teknik Operasi Upload Java", dan semua orang dipersilakan untuk belajar dan membaca.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.