Java Web Image Unggah dan Unggah File
Unggah gambar dan unggahan file pada dasarnya sama, dan gambar itu sendiri juga merupakan file. Unggah file adalah untuk mengunggah gambar ke server. Meskipun ada banyak cara, implementasi yang mendasarinya adalah tentang membaca dan menulis file.
Hal -hal yang perlu diperhatikan
1. Formulir harus menulis atribut enctype = "multipart/form-data"
2. Untuk memastikan bahwa file dapat diunggah dengan sukses, nilai atribut nama kontrol file harus konsisten dengan nama variabel lapisan kontrol yang Anda kirimkan.
Misalnya, jika nama ruang adalah file, maka Anda perlu mendefinisikannya di latar belakang
file file pribadi; // Nama kontrol file
Private String FileContentType; // Jenis Gambar
Private String FilefileName; // Nama file
1. JSP Halaman
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/org/ht4/t." <html> <head> <meta http-equiv = "konten-tipe" content = "text/html; charset = utf-8"> <meta http-equiv = "pragma" content = "no-cache"/> <base target = "_ self"> <title "unggah file </title> </head> </head> <Body" "" "" "" "" "" "" "" "" "" "" "" "" "" "" _ _ _ "_" _ "_" _ _ " enctype = "multipart/form-data"> <input type = "file" name = "file" value = "file"> <input type = "kirim" value = "identifikasi"> </form> </body> </html>
1. Pengontrol yang perlu diserahkan untuk data halaman
Paket com.cpsec.tang.chemical.action; impor java.io.file; impor java.io.ioException; import java.util.random; import javax.annotation.resource; import javax.servlet.http.httpservletrequest; import org.apache. org.apache.struts2.servletactionContext; impor org.springframework.stereotype.controller; impor com.cpsec.tang.chemical.biz.lunbobiz; import com.cpsec.tang.chemical.entity.image; impor com.opensymphony.cpsec.tang.chemical.entity; IMPORT com.opensymphony.cpsecon.tang. Extends ActionSupport { / ** * * / private static final long serialVersionuid = 1l; @Resource (name = "lunbobiz") lunbobiz private lunbobiz; gambar gambar pribadi; file file pribadi; // Nama Kontrol File Private String FileContentType; // Jenis Gambar Private String FilefileName; // Nama File Nomor Integer Pribadi; Public String findImage () {image = lunbobiz.findimage (); Sukses kembali; } public string alterImage () {image = lunbobiz.findimage (); Sukses kembali; } public string oderImage1 () {httpservletRequest request = servletActionContext.getRequest (); String root = request.getRealPath ("/unggah"); // jalur server yang gambarnya akan diunggah nama string [] = filefileName.split ("//."); String filename = ""; if (name.length> = 1) {filename = getRandomString (20)+"."+Names [name.length-1]; } String picpath = "unggah/"+fileName; // jalur gambar yang disimpan ke file database file1 = file baru (root); coba {fileutils.copyfile (file, file baru (file1, nama file)); }} catch (ioException e) {E.PrintStackTrace (); } mengembalikan kesuksesan; } /*Dapatkan string acak* /string publik getRandomString (panjang int) {// panjang menunjukkan panjang string string basis yang dihasilkan = "abcdefghijklmnopqrstuvwxyz0123456789"; Acak acak = acak baru (); StringBuffer SB = StringBuffer baru (); untuk (int i = 0; i <panjang; i ++) {int number = random.nextInt (base.length ()); SB.Append (base.charat (angka)); } return sb.toString (); }}Ini untuk mengunggah file dengan menyalin, dan ada cara lain
Metode 2
@Controller ("ContractAction") Kelas Publik Contractaction memperluas ActionSupport {private final static string unggahdir = "/file"; // jalur untuk mengunggah file, buat file file pribadi di bawah WebContent; // Nama Kontrol Input harus File // Unggah Koleksi Nama FileN Private String FileFileName; // Unggah File Konten Konten Koleksi Private String FileContentType; nama file string pribadi; Public String Unggah () melempar FileNotFoundException, ioException {string path = unggahfile (); // path ke file save save return success; } // Jalankan fungsi unggah @suppressWarnings ("Deprecation") Public String unggah () melempar FileNotFoundException, ioException {coba {inputStream in = FileInputStream baru (file); String dir = servletactionContext.getRequest (). GetRealPath (unggah); File FileLocation = File baru (DIR); // Anda juga dapat secara manual membuat direktori unggahan target di direktori root aplikasi jika (! Filelocation.exists ()) {boolean iscreated = filelocation.mkdir (); if (! isCreated) {// Dibuat gagal membuat direktori unggahan target, pemrosesan lain dapat dilakukan, seperti melempar pengecualian khusus, dll. Situasi ini biasanya tidak seharusnya terjadi. kembali nol; }} // this.setFileFileName (getRandomString (20)); String [] name = this.getFileFileName (). Split ("//."); String filename = getRandomString (20)+"."+Name [name.length-1]; this.setFileFileName (nama file); System.out.println (nama file); File unggahfile = file baru (dir, nama file); OutputStream out = FileOutputStream baru (unggahfile); byte [] buffer = byte baru [1024 * 1024]; panjang int; while ((length = in.read (buffer))> 0) {out.write (buffer, 0, panjang); } in.close (); out.close (); return unggahdir.substring (1)+"//"+filefileName; } catch (FileNotFoundException ex) {return null; } catch (ioException ex) {return null; }} string statis public getRandomString (panjang int) {string str = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789"; Acak acak = acak baru (); StringBuffer SB = StringBuffer baru (); untuk (int i = 0; i <panjang; i ++) {int number = random.nextInt (62); SB.Append (str.charat (angka)); } return sb.toString (); }}Selain unggahan gambar tunggal, ada beberapa unggahan gambar, dan prinsip -prinsipnya sama
paket com.cpsec.tang.chemical.action; import java.io.file; impor java.io.fileInputStream; impor java.io.filenotfoundException; impor java.io.fileoutputStream; impor java.io.ioException; impor java.io.inputstream; impor java.io.outputStream; Impor java.util.list; import javax.servlet.http.httpservletrequest; impor org.apache.struts2.servletactionContext; impor com.opensymphony.xwork.actionsupport;/** unggahan {unggah multi-file*/public class file -fougloadsuploksion extendsupport; "/mengunggah"; // Unggah File Collection Private List <FILE> File; // Unggah nama file koleksi daftar pribadi <string> fileFileName; // Unggah File Konten Konten Koleksi Daftar Pribadi <String> FileContentType; Daftar Publik <FILE> getFile () {return file; } public void setFile (Daftar <FILE> file) {this.file = file; } Daftar Publik <String> getFileFileName () {return fileFileName; } public void setFileFileName (Daftar <String> fileFileName) {this.fileFileName = filefileName; } Daftar Publik <String> getFileContentType () {return filecontentType; } public void setFileContentType (Daftar <String> filecontentType) {this.fileContentType = filecontentType; } public string unggahForm () melempar Exception {httpservletRequest request = servletActionContext.getRequest (); String webpath = null; // unggah path untuk (int i = 0; i <file.size (); i ++) {// loop unggah setiap file unggahanfile (i); webpath = "unggah/"+this.getFileFileName (). get (i); } mengembalikan "kesuksesan"; } // Jalankan fungsi unggah private string unggahfile (int i) melempar filenotfoundException, ioException {coba {inputStream in = new fileInputStream (file.get (i)); String dir = servletactionContext.getRequest (). GetRealPath (unggah); File FileLocation = File baru (DIR); // Di sini Anda juga dapat secara manual membuat direktori unggahan target di direktori root aplikasi jika (! Filelocation.exists ()) {boolean iscreated = filelocation.mkdir (); if (! isCreated) {// Jika direktori unggahan target dibuat, pemrosesan lain dapat dilakukan, seperti melempar pengecualian khusus, dll. Situasi ini tidak boleh terjadi. kembali nol; }} String filename = this.getFileFileName (). Get (i); File unggahfile = file baru (dir, nama file); OutputStream out = FileOutputStream baru (unggahfile); byte [] buffer = byte baru [1024 * 1024]; panjang int; while ((length = in.read (buffer))> 0) {out.write (buffer, 0, panjang); } in.close (); out.close (); return unggahfile.tostring (); } catch (FileNotFoundException ex) {return null; } catch (ioException ex) {return null; }}}Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!