Paket JAR Commons-Fileupload yang disediakan oleh Apache memang sangat sederhana untuk diunggah file. Baru -baru ini, saya harus menggunakan servlet/jsp untuk melakukan fungsi unggahan gambar. Saya telah menemukan banyak informasi online, yang sebagian besar diperkenalkan berdasarkan kerangka kerja Struts. Meskipun beberapa di antaranya juga memperkenalkan unggahan Umpan Bidang, contoh-contoh itu relatif tua, dan beberapa kategori sekarang ditinggalkan.
Melalui ringkasan penelitian dan studi, fungsi unggahan akhirnya selesai. Izinkan saya membagikannya dengan Anda di bawah ini.
Skenario kasus
Antarmuka manajemen Backend Library perlu menyediakan fungsi mengunggah gambar buku dan akhirnya menampilkannya di halaman.
Menyadari efeknya
Masukkan halaman Penambahan Buku, dan gambar default ditampilkan "No Breakthrough Yet" (baik panjang dan lebar adalah 200px), dan tombol disediakan untuk "mengunggah gambar", seperti yang ditunjukkan pada gambar berikut.
Klik tombol "Unggah gambar" dan antarmuka unggah muncul melalui jendela mode, seperti yang ditunjukkan pada gambar di bawah ini.
Pilih gambar yang ditentukan melalui tombol "Jelajahi", klik tombol "Unggah" untuk diunggah. Jika unggahan berhasil, prompt yang sukses akan muncul. Setelah pengguna mengklik "OK", tutup jendela pop-up dan secara otomatis menampilkan gambar baru pada halaman, seperti yang ditunjukkan pada gambar di bawah ini.
Implementasi Kode
First Buat buku Tambah Buku: Bookadd.jsp
Tag tersembunyi dengan ID page photo_id digunakan untuk menyimpan jalur gambar, yang nyaman untuk diserahkan ke latar belakang dan disimpan dalam database, dan tag <mmg> dengan ID IMG_ID digunakan untuk menampilkan gambar. Semua gambar disimpan di bawah server agar mudah dibaca. Kemudian, tombol JS, klik untuk memunculkan halaman Upload melalui jendela Mode. Ketika jendela mode muncul, kemenangan variabel didefinisikan, yang digunakan untuk mendapatkan nilai jalur gambar yang ditransmisikan kembali oleh jendela mode.
(Catatan: Karena masalah keamanan, gambar tidak dapat disimpan sesuka hati. Jika proyek digunakan di server, gambar hanya dapat dilihat di bawah server. Jika Anda harus membaca gambar yang tidak ada di bawah server saat ini, Anda perlu mengkonfigurasi direktori virtual server)
<html> <head> <title> Tambahkan buku </iteme> <script type = "text/javascript"> // buka fungsi unggahan halaman openupload () {var win = window.showmodaldialog ("<%= root%>/admin/bookupload.jsp", "," dialogwidth: 300px; NOMIGNET (300px; NOMIGHOLE: NOMIGN; if (win! = null) {document.geteLementById ("photo_id"). value = win; document.geteLementById ("img_id"). src = "<%= root%>/"+win; }} </script> </head> <body> <h5> Tambahkan buku </h5> <hr/> <p> Sampul buku: <label> <input type = "hidden" id = "photo_id" name = "photo" value = "gambar/noimg.png"> <input type = "tombol" onklick = "OpenUpload ()" NoMG.PNG "> <Input Type =" Tombol "Onclick =" OpenUpload () id = "img_id" src = "<%= root%>/gambar/noimg.png"> </label> </body> </html> ②Buat Halaman Impload Gambar, Bookupload.jsp
Perhatikan bahwa Anda harus mendefinisikan tag <Base>. Data dapat dikembalikan ke bentuk induk ketika jendela mode saat ini ditutup. Tag <Morm> juga perlu mengatur properti enctype = "multipart/form-data" sehingga file yang dikirim dapat diperoleh dengan latar belakang. Klik tombol "Unggah" untuk mengirimkan file ke latar belakang. Sorotan yang tersisa adalah pemrosesan unggahan latar belakang.
<html> <head> <meta http-equiv = "konten-tipe" content = "text/html; charset = gbk"> <meta http-equiv = "pragma" content = "no-cache"/<span style = "color: #ff0000;"> <base target = "_ _ unggah"> </span = #ff0000; "> <pangkalan target =" _ _ unggah "> </span unggul: #ff0000;"> <basis target = "_ unggah" <h5> unggahan gambar </h5> <hr/> <p style = "color: red"> $ {requestScope.errormsg} </p> <form neim = "form1" name = "Form1" action = "<%= root%>/bookservlet? Type = BookUpload" Metode = "post" postype = "Multipart>/bookservlet? <div> <input type = "file" name = "file_upload"/> </div> <div> <input type = "kirim" value = "unggah"/> </div> </form> </body> </html> ③ Buat servlet biasa, hanya beberapa kode kunci yang disediakan di bawah ini
Bagian kode merah adalah kode kunci yang diunggah, dan yang lainnya digunakan sebagai hiasan. Lengkapi ketiga langkah ini dan unggahan sederhana akan tercapai.
Public Class BookserVlet memperluas httpservlet {private string unggahPath = "eShop/unggah/"; // Direktori untuk mengunggah file Private String Temppath = "Eshop/UploadTmp/"; // Direktori File Sementara Private String ServerPath = NULL; private int sizemax = 3; // gambar maksimum batas atas private string [] filetype = new string [] {". jpg", ". gif", ". bmp", ". png", ". jpeg", ". ico"}; public void doGet (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {serverpath = getServletContext (). getrealpath ("/"). ganti ("//", "/"); // Jalankan saat servlet diinisialisasi. Jika direktori file yang diunggah tidak ada, itu akan secara otomatis membuat IF (! File baru (serverpath+unggahpath) .isdirectory ()) {file baru (serverpath+unggahpath) .mkdirs (); } if (! File baru (ServerPath+Temppath) .isDirectory ()) {File baru (serverpath+Temppath) .mkdirs (); } <span style = "Color: #ff0000;"> DiskFileItemFactory factory = DiskfileItemFactory baru (); </span> factory.setsizethreshold (5*1024); // maksimum cache factory.setrepository (file baru (serverpath+temppath)); // direktori file sementara <span style = "color: #ff0000;"> servletfileupload unggah = servletfileupload (factory); </span> unggah. Coba {<span style = "Color: #ff0000;"> Daftar <FILEItEM> item = unggah.ParSeRequest (request); </span> // Dapatkan semua daftar file untuk (fileItem item: item) {// Dapatkan nama file, nama file ini termasuk path <span style = "color: #ff0000;"> if (! item.getName (). TolowerCase (); if (filename.endswith (filetype [0]) || filename.endswith (filetype [1]) || filename.endswith (filetype [2]) || filename.endswith (filetype [3]) || filename.endswith (filetype [4]) || filename.endswith (fileType. Uuid.randomuuid (). Tostring (); filepath = serverpath+unggahPath+uuid+filename.substring (filename.lastIndexof (".")); <span style = "color: #ff0000;"> item.write (file baru (filepath)); </span> printwriter pw = response.getWriter (); pw.write ("<script> alert ('diunggah dengan sukses'); window.ReturnValue = '"+unggahpath+uuid+filename.substring (fileName.lastIndexof ("."))+"'; window.close (); </script>"); pw.flush (); pw.close (); } else {request.setAttribute ("errormsg", "Unggah gagal, harap konfirmasi bahwa file yang diunggah ada dan merupakan gambar!"); request.getRequestDispatcher ("/admin/bookupload.jsp"). Forward (Request, Response); }}}} catch (Exception e) {E.PrintStackTrace (); reading.setAttribute ("errorrormsg", "unggah gagal, harap konfirmasi bahwa ukuran file yang diunggah tidak dapat melebihi"+Sizemax+"m"); request.getRequestDispatcher ("/admin/bookupload.jsp"). Forward (Request, Response); }}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.