Unggah file dan unduh
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 = new DiskFileItemFactory (); // 2. Buat file unggah file Core Tool Class ServletFileUpload Upload = New ServletFileUpload (Factory); // 1. Tetapkan ukuran maksimum yang diizinkan untuk satu file: 30mupload.setFilesizax (30*1024*1024); 80MUpload.setsizeMax (80*1024*1024); // 3. Atur pengkodean nama file formulir unggahan // setara dengan: request.setcharacterencoding ("UTF-8"); unggah. 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 (stream 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 Ganti 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 + "#" + name; // dapatkan path string unggah jalur string = getservercontext (). GetRealPath ("/unggah"); // Buat file file target = file baru (path, name); // kelas alat, file unggah file.write (file); Item.delete (); // Hapus file sementara yang dihasilkan oleh sistem System.out.println ();}}} else {System.out.println ("Formulir saat ini bukan formulir unggah file, pemrosesan gagal!");}} Tangkap (pengecualian e) {e.printStackTrace ();}}}}}}} {e.printstackTrace ();}} //// MANUAL PROSES PROSES KRINTSIPT ();}}}}} {E.PrintStackTRACE (); IOException, UnsportedencodingException {/*Request.GetParameter (""); // get/postrequest.getQueryString (); // Dapatkan data yang dikirimkan oleh get request.getInputStream (); // Dapatkan data yang dikirimkan melalui pos*// **************** Secara manual mendapatkan data Formulir Uploid File **************** /// 1. Dapatkan Formulir Data Stream InputStream di = request.getInputStream (); // 2. Konversi stream inputStreamReader instream = inputStreamReader baru (dalam, "UTF-8"); // 3. BufferedReader Reader = New BufferedReader (Instream); // Output Data String String = null; while ((str = reader.readline ())! = Null) {System.out.println (str);} // tutup reader.close (); instream.close (); in.close ();} tutup public.close (); doPeam.close (); in.close ();} publicer HttpservletResponse response) melempar servletException, ioException {this.doget (request, response);}}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
/*** Process 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);} lain jika ("downlist" .Equals (metode)) {// Masukkan daftar unduhan downlist (permintaan, respons);} lain jika ("down" .Equals (Metode)) {// unduh down (request, response);}}/*. HttpservletResponse response) melempar servletException, ioException {try {// 1. Buat pabrik fileitemFactory objek factory = new diskfileIteMfactory (); // 2. File unggah Kelas alat servletFileupload unggah = servletFileUdoad (factory); unggah.setFilesizeMax (10*1024*1024); // Ukuran ukuran file tunggal unggah.setsizeMax (50*1024*1024); // Total Ukuran File Batas Upload.SetHeaderencoding ("UTF-8"); // Memproses Pengkodean File China // Hakim IF (unggah.ismultipartContent (request)) {// 3. Konversi data permintaan ke daftar daftar koleksi <FILEITEM> LIST = unggah nilai string value = item.getString (); System.out.println (value);} // File Formulir item lain {/************ File Upload **************** /// a. Dapatkan nama file string name = item.getName (); // --- menangani masalah mengunggah nama file duplikat --- // a1. Dapatkan ID string tanda 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 (); // Delete the temporary file generated when the component is running}}}}} catch (Exception e) {e.printStackTrace();}}/*** 2. Enter the download list */private void downList(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// Implementation idea: first get the file names of all files di 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 semua file di bawah string bathpath = getserVletContext (). GetRealPath ("/unggah"); // file direktori = file baru (bathpath); // di direktori, semua daftar nama string [] = file.list (); // traversal, enkapsulate if (list! = Null & null & fILE.list (); // traversal, enkapsulate if (list! = Null & null & flist (); // traversal, enkapsulate if (list! = Null & null & FILE (); 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. Forward request.getRequestDispatcher ("/downlist.jsp"). Forward (request, response);}/*** 3. Tangani unduhan*/private void down (httpservletRequest request, httpservePesponse response = lempar LAYAN, IOOException {// Dapatkan nama file yang diunduh oleh The ServletException, IOOException {// Dapatkan nama file yang diunduh oleh The ServletException, IOOException {/mendapatkan nama file yang diunduh oleh The LAY request.getParameter ("FileName"); fileName = string baru (filename.getbytes ("ISO8859-1"), "UTF-8"); // Dapatkan string direktori unggahan basepath = getserVletContext (). GetRealPath ("/unggah"); // Dapatkan file inputContext (). File (Basepath, fileName)); // Jika nama file adalah Cina, encoding URL perlu dilakukan fileName = urlencoder.encode (nama file, "UTF-8"); // Atur header respons untuk unduhan.setHeader ("Content-Disposisi", "Lampiran; FileName =" + FileName); //setread BIGETTE BIESTEEM; response.getoutputStream (); byte [] b = byte baru [1024]; int len = -1; while ((len = in.read (b))! = -1) {out.write (b, 0, len);} // tutup.close (); in.close ();} public void dopost (permintaan httpservletrequest, respons httpservletresponse) melempar servletException, ioException {this.doget (permintaan, respons);}}Pengembangan surat
Pekerjaan Persiapan, Konstruksi Lingkungan:
1. Bangun server surat secara lokal
Server EasyMail, EyoumailServerSetup.exe
2. Buat akun email baru
Zhang San mengirim email ke Li Si.
Langkah 1:
Buat Nama Domain Baru: Alat, Pengaturan Server, Masukkan Itcast.com di kotak Nama Domain Tunggal
Langkah 2:
Buat akun email baru: [email protected]
3. Instal Foxmail
Konfigurasikan Server Pengiriman Email (SMTP): LocalHost 25
Server Penerima Email (POP3): LocalHost 110
Buat akun baru dan Anda dapat menerima email!
Melihat
Melihat
Jika itu adalah proyek web, karena Javaee dilengkapi dengan fungsi email, mungkin ada masalah!
Kita perlu menggunakan fungsi file mail.jar kita sendiri! Anda perlu menghapus paket surat di Javaee!
menggunakan:
Untuk pengembangan Javamail, pertama -tama perkenalkan file jar:
Activation.jar [Jika Anda menggunakan JDK1.6 atau di atas, Anda tidak dapat menggunakan file jar ini] mail.jar [Kirim paket inti melalui email]/*** 1. Kirim email normal*@Author jie.yuan **/kelas publik app_sendmail {@testpublic void testsend () Lemparan pengecualian {/0. Properti Parameter Surat Prop = properti baru (); prop.put ("mail.transport.protocol", "smtp"); // Tentukan protokol prop.put ("mail.smtp.host", "localhost"); // host stmp.qq.comprop.put ("mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // kata sandi pengguna authentication prop.put ("mail.debug", "true"); // mode debug // 1. Buat sesi sesi email = session.getDefaultInstance (prop); // 2. Buat Objek Mail Body (seluruh objek email) MIMEMESSAGE Pesan = mimemessage baru (sesi); // 3. Setel parameter badan surat: //3.1 Judul pesan.setsubject ("Email pertama saya"); // 3.2 Email Mengirim pesan waktu. InternetAddress ("[email protected]")); // 3.5 konten pesan.setText ("Halo, itu telah berhasil dikirim! Teks ..."); // pesan email teks sederhana sederhana.savechanges (); // Simpan email (opsional) // 4. Kirim transfer transport = session.getTransport (); trans.connect ("zhangsan", "888"); // Kirim surat ke trans.sendMessage (pesan, pesan.getAllrecipients ()); trans.close ();}}Dengan gambar
/*** Email dengan sumber daya gambar*@author jie.yuan **/kelas publik app_2sendWithImg {// parameter inisialisasi Private static Properties prop; // pengirim private static internetAddress sendman = null; static {prop = new properties (); prop.put ("mail.transport.protocol", " // Tentukan protokol prop.put ("mail.smtp.host", "localhost"); // host stmp.qq.comprop.put ("mail.smtp.port", 25); // Tentukan protokol prop.put ("mail.smtp.port", 25); // Tentukan protokol prop.put ("mail.smtp.port", "localhost"); // host stmp.qq.comprop.put ("mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // kata sandi pengguna authentication prop.put ("mail.debug", "true"); // Mode Debug Coba {sendman = new internetAddress ("[email protected]");} catch (addressException e) {lempar runimeException baru (e);}}@testpublic void testsend () lemparan pengecualian (// 1. Buat sesi sesi email sesi sesi = session.getdefaule () lemparan () (e). Mimemessage (sesi); // 3. Set parameter: judul, pengirim, penerima, kirim waktu, pesan konten. message.setsender (sendman); message.setrecipient (recepementType.to, new internetAddress ("[email protected]")); message.setSentDate(new Date());/************************ Set email content: Multifunction user email (related)**********************/// 4.1 Build a multifunctional email block MimeMultipart related = new MimeMultipart("related");// 4.2 Build multi-function mail block content = text on the left + image resource on the right MimeBodyPart content = mimebodypart baru (); mimebodypart resource = mimebodypart baru (); // atur konten spesifik: a. Sumber daya (gambar) string filepath = app_2sendwithimg.class.getResource ("8.jpg"). GetPath (); DataSource ds = new fileDataSource (file baru (filepath)); DataHandler handler = handller (ds); sumber daya. // Atur nama sumber daya dan referensi kunci asing // Atur konten spesifik: b. Konten teks.setContent ("<img src = 'cid: 8.jpg'/> ok!", "Text/html; charset = utf-8"); terkait.addbodypart (konten); terkait. session.getTransport (); trans.connect ("zhangsan", "888"); trans.sendMessage (pesan, pesan.getAllrecipients ()); trans.close ();}}Gambar + lampiran
/*** 3. Email dengan sumber daya gambar dan lampiran*@Author jie.yuan **/kelas publik app_3imgandatta {// parameter inisialisasi Properti privat privat prop; // pengirim private static internetAddress sendman = null; statis {prop = smt "; // Tentukan protokol prop.put ("mail.smtp.host", "localhost"); // host stmp.qq.comprop.put ("mail.smtp.port", 25); // port prop.put ("mail.smtp.auth", "true"); // kata sandi pengguna authentication prop.put ("mail.debug", "true"); // Mode Debug Coba {sendman = new internetAddress ("[email protected]");} catch (addressException e) {lempar runimeException baru (e);}}@testpublic void testsend () lemparan pengecualian (// 1. Buat sesi sesi email sesi sesi = session.getdefaule () lemparan () (e). Mimemessage (sesi); // 3. Set parameter: judul, pengirim, penerima, kirim waktu, pesan konten. message.setsender (sendman); message.setrecipient (recepementType.to, new internetAddress ("[email protected]")); message.setsentDate (tanggal baru ());/** Pengembangan surat dengan lampiran (gambar)*/// Bangun total blok surat mimemultipart mixed = mimemultipart baru ("campuran"); // -> total surat adalah cepat, lampiran mime. Mimebodypart kanan = mimebodypart () baru (); // diatur ke total blok mail mixed.addbodypart (kiri); mixed.addBodyPart(right);/******* Attachment**********/String attr_path = this.getClass().getResource("a.docx").getPath();DataSource attr_ds = new FileDataSource(new File(attr_path));DataHandler attr_handler = new DataHandler (attr_ds); right.setDataHandler (attr_handler); right.setFileName ("a.docx");/********************** Atur Konten Email: Email Pengguna Multifungsi (Terkait/TERKAIT--TERKAIT = MUMEMUMUL*************** // 4.1 Bangun Multifungsi Blok Email Multifungsi Mimemul Mimemulip Mimemulipor = Mimemulipor = MimemultipArt = ke kiri. Sumber daya (gambar) string filepath = app_3imgandatta.class.getResource ("8.jpg"). GetPath (); DataSource ds = new fileDataSource (file baru (filepath)); DataHandler handler = handller new DataHandler (ds); sumber daya. // Atur nama sumber daya dan referensi kunci asing // Atur konten spesifik: b. Konten teks.setContent ("<img src = 'cid: 8.jpg'/> ok!", "Text/html; charset = utf-8"); terkait. "888"); trans.sendMessage (pesan, pesan.getAllrecipients ()); trans.close ();}}Di atas adalah contoh kode untuk mengunggah dan mengunduh file java dan mengirim dan menerima email yang diperkenalkan kepada Anda. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!