Unggah file sangat umum dalam aplikasi web. Sangat mudah untuk mengimplementasikan fungsi pengunggahan file di lingkungan web Java, karena sudah ada banyak komponen yang dikembangkan di Java untuk mengunggah file di internet. Artikel ini menggunakan komponen Most Commons-Fileupload sebagai contoh untuk menunjukkan cara menambahkan fungsi unggahan file ke aplikasi web Java.
Komponen Commons-Fileupload adalah salah satu proyek open source Apache dan dapat diunduh dari http://commons.apache.org/fileupload/. Komponen ini sederhana dan mudah digunakan, memungkinkan Anda untuk mengunggah satu atau lebih file sekaligus dan dapat membatasi ukuran file.
Setelah diunduh, unzip paket zip dan salin commons-fileupload-1.x.jar ke Webapps Tomcat/webapp/web-inf/lib/. Jika direktori tidak ada, silakan buat direktori Anda sendiri.
Buat unggahan baru yang baru untuk mengunggah file:
paket com.liaoxuefeng.web; kelas publik FileuploadServlet memperluas httpservlet {private string unggahdir = "c: // temp"; @Override Protected void dopost (httpservletrequest req, httpservletresponse resp) melempar servletException, ioException {// tODO:}}Ketika servlet menerima permintaan pos yang dikeluarkan oleh browser, itu mengimplementasikan unggahan file dalam metode dopost (). Kita perlu melintasi FileIteMiterator dan mendapatkan setiap FileItemStream:
@Overrideprotected void dopost (httpservletRequest req, httpservletResponse resp) melempar servletException, ioException {coba {servletFileUpload unggah = servletfileupload (); // atur ukuran file maks ke 1 mb: unggah.setFilesizeMax (1024 * 1024); FileIteMIterator it = unggah.getItemIterator (req); // menangani dengan setiap file: while (it.hasnext ()) {fileItemStream item = it.next (); if (! item.isFormField ()) {// Ini adalah unggahan file: candlefileItem (item); }} req.getRequestDispatcher ("Success.jsp"). Forward (req, resp); } catch (FileuploAdException e) {Throw New ServletException ("Tidak dapat mengunggah file.", E); }}Baca aliran input file yang diunggah dalam metode handlefileItem (), dan kemudian tuliskan ke unggahdir, dan nama file dihasilkan secara acak oleh UUID:
void handleFileItem (fileItemStream item) melempar ioException {system.out.println ("File unggah:" + item.getName ()); File newuploadfile = file baru (unggahdir + "/" + uuid.randomuuid (). ToString ()); byte [] buffer = byte baru [4096]; Inputstream input = null; OutputStream output = null; coba {input = item.openstream (); output = baru bufferedOutputStream (FileOutputStream baru (newUploadFile)); untuk (;;) {int n = input.read (buffer); if (n == (-1)) break; output.write (buffer, 0, n); }} akhirnya {if (input! = null) {coba {input.close (); } catch (ioException e) {}}}Jika Anda ingin membaca folder unggahan yang ditentukan di file konfigurasi web.xml, Anda dapat menginisialisasi dalam metode init ():
@Overridepublic void init (servletConfig config) melempar servletException {super.init (config); this.uploaddir = config.getInitparameter ("dir");}Akhirnya, konfigurasikan servlet di web.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype Web-app Public "-// Sun Microsystems, Inc./DTD Aplikasi Web 2.3 // en" "http://java.sun.com/dtd/web-app_2_3.dtp"> <sapp> servlet> <pload> servlet> <donser> servlet> <donser> servlet> <donser> servlet> <lvoame> servlet> <loqu-n-non-non-n-neades> <servlet-class> com.liaoxuefeng.web.fileuploadservlet </servlet-class> </servlet> <servlet-Mapping> <servlet-name> unggahServlet </servlet-name> <rerl-pattern>/unggah </rerl-pattern> </servlet-mapping> </web-appat>
Setelah mengkonfigurasi servlet, mulailah tomcat atau resin dan tulis tes indeks.htm sederhana:
<html> <body> <p> FileuploadServlet Demo </p> <form name = "form1" action = "unggah" metode = "post" enctype = "multipart/form-data"> <input type = "file" name = "file"/> <input type = "kirim" name = "Tombol" value = "Submit"
Perhatikan bahwa Action = "Unggah" menentukan URL pemetaan dari FileuploadServlet yang menangani file yang diunggah.
Ketika unggahan berhasil, Success.jsp ditampilkan, jika tidak, pengecualian dilemparkan. Jika ukuran file yang diunggah melebihi 1MB yang kami atur, kami akan mendapatkan exception yang disetujui FileizelimiteExeded.
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.