Contoh -contoh dalam artikel ini berbagi unggahan file dan unduh kode implementasi java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Meja Depan:
1. Metode pengiriman: Posting
2. Ada item formulir yang diunggah file dalam formulir: <input type = "file" />
3. Tentukan jenis formulir:
Jenis default: enctype = "Application/X-WWW-Form-Urlencoded"
Tipe Upload File: multipart/form-data
Fileupload
Ini biasanya digunakan dalam pengembangan fungsi unggahan file, dan Apache juga menyediakan komponen unggahan file!
Komponen Fileupload:
1. Unduh kode sumber
2. Perkenalkan file JAR di proyek
Commons-FileUpload-1.2.1.jar [File Upload Paket JAR Core Component]
commons-io-1.4.jar [Kelas alat terkait bordir untuk pemrosesan file]
menggunakan:
Kelas Publik UploadServlet memperluas httpservlet {// diunggah direktori, simpan sumber daya yang diunggah void doGet (httpservletrequest, httpservletResponse respons FileitemFactory factory = DiskFileItemFactory baru (); // 2. Buat File Upload Core Tool Class ServletFileUpload Upload = NEW SERVLETFILEUPLOAD (Factory); // 1. Atur ukuran maksimum yang diizinkan untuk satu file: 30m unggah.setFilesizeMax (30*1024*1024); // 2. Atur ukuran total yang diizinkan untuk Formulir Upload File: 80m Unggah.SetsizeMax (80*1024*1024); // 3. Atur pengkodean nama file Formulir Unggah // setara dengan: request.setcharacterencoding ("UTF-8"); unggah.setheaderencoding ("UTF-8"); // 3. Tentukan: apakah formulir saat ini adalah formulir unggahan file jika (unggah.ismultipartContent (permintaan)) {// 4. Konversi data yang diminta menjadi objek FileItem, dan kemudian merangkum daftar <fileitem> list = unggah.parserequest (permintaan); // Traversal: Dapatkan setiap data yang diunggah untuk (item FileItem: Daftar) {// Judgment: Data Teks Normal if (item.ISFormField ()) {// Data Teks Normal String FieldName = item.getFieldName (); // form name elemen string content = item.getString (); // Bentuk nama elemen, data yang sesuai //item.getString("utf-8 "); Tentukan encoding system.out.println (fieldName + "" + Content); } // Unggah file (aliran file) ---> Unggah ke direktori unggahan lain {// data teks normal string fieldname = item.getFieldName (); // bentuk name elemen string name = item.getName (); // nama file string content = item.getString (); // Bentuk nama elemen, string data yang sesuai type = item.getContentType (); // Jenis file inputStream in = item.getInputStream (); // Unggah aliran file/** 4. Nama file adalah nama* untuk pengguna yang berbeda file readme.txt, tidak ingin ditimpa! * Pemrosesan Latar Belakang: Tambahkan tag unik ke pengguna! */ // A. Secara acak menghasilkan tag string ID unik = uuid.randomuuid (). ToString (); // B. Nama splice dengan nama file = id + "#" + nama; // Dapatkan jalur string basis unggah = getserVletContext (). GetRealPath ("/unggah"); // buat file file target file = file baru (path, name); // Kelas Alat, File Upload Item.Write (File); item.delete (); // hapus file sementara yang dihasilkan oleh System System.out.println (); }}} else {System.out.println ("Formulir saat ini bukan formulir unggahan file, pemrosesan gagal!"); }} catch (Exception e) {e.printstacktrace (); }} // Implementasi manual dari proses void unggahan pribadi (permintaan httpservletRequest) melempar ioException, UnsupportedEncodingException { /* request.getParameter (""); // dapatkan/posting request.getQueryString (); // Dapatkan data yang dikirimkan oleh get request.getInputStream (); // Dapatkan data yang dikirimkan melalui pos*//**************** Secara manual dapatkan data Formulir Upload File *************** // 1. Dapatkan Formulir Data Stream InputStream di = request.getInputStream (); // 2. Convert Stream InputStreamReader Instream = InputStreamReader baru (dalam, "UTF-8"); // 3. BufferedReader Reader = New BufferedReader (Instream); // output data string str = null; while ((str = reader.readline ())! = null) {System.out.println (str); } // output data string str = null; while ((str = reader.readline ())! = null) {System.out.println (str); } // tutup reader.close (); instream.close (); melampirkan(); } public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {this.doget (permintaan, respons); }}Kasus:
Index.jsp
<body> <a href = "$ {pagecontext.Request.contextPath} /upload.jsp"> Upload file </a> <a href = "$ {pagecontext.Request.contextPath}/Fileservlet? Metode = downlist"> Unduh file </a> <//bodyUnggah.jsp
<body> <form name="frm_test" action="${pageContext.request.contextPath }/fileServlet?method=upload" method="post" enctype="multipart/form-data"> <%--<input type="hidden" name="method" value="upload">--%> Username: <input type="text" name="userName"> <br/> File: <input type = "file" name = "file_img"> <br/> <input type = "kirim" value = "kirim"> </form> </body>Fileservlet.java
/** * Handle file upload and download* @author Jie.Yuan * */public class FileServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Get request parameters: distinguish different operation types String method = request.getParameter("method"); if ("unggah" .equals (metode)) {// unggah unggah (permintaan, respons); } else if ("downlist" .Equals (Method)) {// Masukkan daftar unduhan Downlist (Request, Response); } else if ("down" .Equals (Method)) {// Unduh Down (Request, Response); }} / **? // 2. File Unggah Kelas Alat Inti ServletFileUpload Upload = NEW SERVLETFILEUPLOAD (pabrik); // Setel Ukuran Ukuran Parameter Batas.SetFilesizeMax (10*1024*1024); // Ukuran ukuran file tunggal unggah.setsizeMax (50*1024*1024); // Total Ukuran File Batas Upload.SetHeaderencoding ("UTF-8"); // memproses pengkodean file Cina // menilai jika (unggah. // traversal untuk (item fileitem: daftar) {// penilaian: data teks normal if (item.isFormField ()) {// Dapatkan nama string name = item.getFieldName (); // Dapatkan nilai string value = item.getString (); System.out.println (nilai); } // File Formulir item lain { / ************ File Unggah **************** / // a. Dapatkan nama file name name = item.getName (); // --- Tangani masalah mengunggah nama file nama duplikat ---- // a1. Dapatkan Mark String ID yang unik = UUID.RANDOMUUID (). ToString (); // A2. Nama file splice nama = id + "#" + nama; // B. Dapatkan string Direktori Unggah Basepath = getSerVletContext (). GetRealPath ("/unggah"); // C. Buat objek file yang akan diunggah file file = file baru (Basepath, name); // D. Unggah item.write (file); item.delete (); // hapus file sementara yang dihasilkan saat komponen berjalan}}}}} catch (Exception e) {e.printstacktrace (); }} / *** 2. Masukkan daftar unduhan* / private void downlist (httpservletRequest, respons httpservletResponse) melempar servletException, ioException {// ide implementasi: dapatkan nama file semua file dalam direktori unggah, dan kemudian simpan; Lompat ke daftar down.jsp ke ditampilkan // 1. Inisialisasi peta koleksi peta <nama file yang berisi tag unik, nama file pendek>; Peta <String, String> FileNames = new HashMap <String, String> (); // 2. Dapatkan Direktori Unggah dan Nama File dari semua file di bawah String Bathpath = GetSerVLetContext (). GetRealPath ("/Unggah"); // File File Direktori = File Baru (Bathpath); // di direktori, semua nama file string name [] = file.list (); // traversal, enkapsulate if (list! = Null && list.length> 0) {for (int i = 0; i <list.length; i ++) {// nama lengkap string filename = daftar [i]; // nama pendek string shortname = filename.substring (filename.lastIndexof ("#")+1); // Encapsulate FileNames.put (nama file, shortname); }} // 3. Simpan untuk meminta permintaan domain.setAttribute ("nama file", nama file); // 4. Forward request.getRequestDispatcher ("/downlist.jsp"). Forward (Request, Response); } / *** 3. Tangani unduh* / private void down (httpservletRequest permintaan, httpservletResponse response) melempar servletException, ioException {// Dapatkan nama file yang diunduh oleh pengguna (Tambahkan data setelah alamat URL, get) string filename = request.getParameter ("file"; " filename = string baru (filename.getbytes ("iso8859-1"), "UTF-8"); // dapatkan string jalur direktori unggah basepath = getservercontext (). GetRealPath ("/unggah"); // Dapatkan inputStream stream file di = FileInputStream baru (file baru (Basepath, fileName)); // Jika nama file adalah Cina, encoding URL perlu dilakukan fileName = urlencoder.encode (nama file, "UTF-8"); // Atur header respons untuk unduhan response.setHeader ("konten-disposisi", "lampiran; fileName =" + fileName); // Dapatkan respons byte stream outputStream out = response.getoutputStream (); byte [] b = byte baru [1024]; int len = -1; while ((len = in.read (b))! = -1) {out.write (b, 0, len); } // tutup.close (); melampirkan(); } public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {this.doget (permintaan, respons); }}Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.