Unggahan file
multipart/form-data<input type=“file”> perlu ditambahkan.<S: Form Action = "TestUpload" Enctype = "Multipart/Form-Data"> <S: TextField name = "nama pengguna [0]" label = "user-1"> </s: textfield> <s: nama file = "Foto" label = "Foto"> </s: file> <S: Textfield Nama = "nama username [1]" Label = " label = "Foto"> </s: File> <S: TextField Name = "UserName [2]" Label = "User-3"> </s: TextField> <s: nama file = "foto" label = "foto"> </s: file> <s: kirim nilai = "kirim"> </s: kirim> </s: bentuk>
unggahan kelas publik memperluas ActionSupport { @setter @Getter Private List <FILE> FOTO; @Setter@Getter Private List <String> PhotosContentType; @Setter@Getter Private List <String> photosfileName; @Setter@Getter Private List <String> Nama pengguna; public string testUpload () melempar ioException {System.out.println ("Nama pengguna:"+nama pengguna); System.out.println ("Foto:"+Foto); System.out.println ("PhotosFileName:"+PhotosFileName); System.out.println ("PhotosContentType:"+PhotoscontentType); // Lewati file ke file unggah di direktori server root // dapatkan servletcontext servletcontext servletcontext = servletActionContext.getSerVletContext (); // Dapatkan string jalur nyata realPath = servletContext.getRealPath ("/unggah"); System.out.println (RealPath); File unggahfile = file baru (realpath); // menilai apakah ada jalan jika (! Unggahfile.exists ()) {// Buat unggahanfile.mkdir (); } untuk (int i = 0; i <photos.size (); i ++) {uuid uuid = uuid.randomuuid (); Fileutils.copyfile (photos.get (i), file baru (realpath + "/" + uuid + photosfileName.get (i))); } mengembalikan kesuksesan; }}1. Berapa banyak masalah kecil yang harus ditangani?
1. Nama file memiliki nama duplikat. Secara umum, UUID dapat dihasilkan sebelum nama file sebagai awalan.
2. Batasi ukuran satu file
3. Batasi jenis file
4. Batasi ukuran file total
2. Interceptor Fileupload disediakan di Struts2 untuk mengatur nilai atribut ini.
Fileupload Interceptor memiliki 3 properti yang dapat diatur.
Catatan: Ada batasan pada ukuran total file yang diunggah di default.properties di bawah org.apache.struts2. Anda dapat menggunakan konstanta untuk memodifikasi batas ini struts.multipart.maxsize = 2097152
<constant name="struts.devMode" value="true"/> <!-- Change the size of the total file here --> <constant name="struts.multipart.maxSize" value="2097152"/> <package name="default" namespace="/" extends="struts-default"> <interceptors> <interceptor-stack name="myInterceptor"> <Interceptor-Ref Name = "DefaultStack"> <!-Ubah ukuran satu file, komponen Fileupload Commons menerima file yang diunggah secara default adalah 2m-> <param name = "Fileupload.maximumzeSize"> 57.408 </param> <!-Jenis file yang diizinkan untuk mengunggah-> Param name = "Fileupload.allowedTypes"> gambar/pjpeg, gambar/gif </param> <!-Ekstensi untuk mengunggah file-> <param name = "fileupload.allowedextensions"> JPG, gif </param> </peseptor-pault </interceptor-stack> </gif </param> </peseptor name = "myInterceptor"> </default-interceptor-ref> <action name = "testUpload" method = "testUpload"> <result name = "success">/web-inf/views/success.jsp </hasilnya> <name hasil = "input">/unggah
1. Pesan kesalahan yang terkait dengan mengunggah file?
1. Pesan kesalahan yang terkait dengan unggahan file telah ditentukan sebelumnya dalam file struts-messages.properties.
2. Anda dapat mengunggah file sumber daya yang sesuai dengan tindakan dalam file atau mendefinisikan kembali pesan kesalahan dalam file sumber daya internasional i18n_zh_cn.properties International
struts.messages.error.file.too.large = File yang Anda lewati terlalu besar struts.messages.error.content.type.not.allowed = type file kesalahan struts.messages.ror.file.
Unduh File
Dalam beberapa aplikasi, mungkin perlu mengirim file ke browser pengguna secara dinamis, dan nama dan lokasi penyimpanan file tidak dapat diprediksi saat pemrograman
Kode sampel
<a href = "testdownload"> Unduh </a>
Public Class DownloadAction Extends ActionSupport {// Biasanya parameter berikut akan disediakan di Action @setter @Getter Private String ContentType; @Setter@getter Private Long ContentLength; @Setter@getter Private String ContentDisposition; @Setter@getter private inputstream inputStream; public String testdownload () Throws FileNoTFoundException, UnsupportedEncodingException {// Dapatkan servletContext ServletContext servletContext = servletActionContext.getSerVletContext (); // Dapatkan jalur file string realPath = servletContext.getRealPath ("/web-inf/file/setidaknya you.mp3"); // Dapatkan aliran file inputStream = FileInputStream baru (realPath); // Atur file jenis contentType = servletContext.getMimetype (realPath); // Dapatkan panjang file contentLength = file baru (realpath) .length (); // atur nama file string filename = "setidaknya you.mp3"; filename = string baru (filename.getbytes ("gbk"), "iso8859-1"); contentDisposition = "lampiran; fileName ="+nama file; Sukses kembali; }}<!-Unduh File-> <action name = "testdownload" Method = "testDownload"> <result type = "stream"> <!-ukuran buffer file-> <param name = "bufferSize"> 2048 </param> </rence> </ action>
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.