Mengunggah file adalah salah satu skenario umum di internet. Situasi yang paling khas adalah mengunggah avatar, dll. Hari ini, saya akan membawa Anda untuk melakukan kasus kecil mengunggah file di Spring Boot.
1. Konfigurasi Paket POM
Kami menggunakan versi terbaru Spring Boot 1.5.9, JDK menggunakan 1.8, tomcat8.0.
<partent> <groupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-parent </artifactid> <version> 1.5.9.release </version> </parent> <properties> <java.version> 1.8 </version </versi> </Properties> <Java.Version> 1.8 </version <groupid> org.springframework.boot </sroupid> <ArTifactId> Spring-boot-starter-web </t Artifactid> </ganden> <sependency> <roupid> org.springframework.boot </groupid> <Artifactid> SPRING-BOTTOM-STARTER-THYMELEAF </groupid> <Artifactid> <groupId> org.springframework.boot </groupid> <ArTifactId> spring-boot-devtools </artifactid> <pilihan> true </portsional> </dependency> </dependencies>
Spring-boot-starter-thymeleaf diperkenalkan sebagai mesin templat halaman dan tulis beberapa contoh unggahan sederhana.
2. Pengaturan kelas startup
@SpringbootApplicationPublic kelas FileuploadWebApplication {public static void main (string [] args) melempar Exception {springApplication.run (FileuploadWebAndicPleication.class, args); } // Tomcat Besar File Unggah Koneksi Reset @Bean Public TomcatembedDedServletContainerFactory tomcatembedded () {tomcatembedservletContainerFactory tomcat = tomcatembeddedservletContainerFactory (); tomcat.addconnectorcustomizers ((tomcatconnectorcustomizer) konektor -> {if ((connector.getProtocolHandler () instance dari abstracthttp11protocol <?>)) {// -1 berarti tidak terbatas ((abstracttp11protocol <?>) connector.getProtocolHandler ()). SetMaxswallowsize (-1); mengembalikan Tomcat; }}Kode tomcatembedded adalah untuk menyelesaikan masalah reset koneksi saat mengunggah file yang lebih besar dari 10m. Konten pengecualian ini juga tidak ditangkap oleh GlobalException.
Referensi Konten Detail: Tomcat Besar File Unggah Reset
3. Tulis halaman front-end
Halaman Unggah
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><body><h1>Spring Boot file upload example</h1><form method="POST" action="/upload" enctype="multipart/form-data"> <input type="file" name="file" /><br/><br/> <input type = "Kirim" value = "Kirim"/> </form> </body> </html>
Permintaan posting yang sangat sederhana, kotak pilihan untuk memilih file, dan tombol kirim, efeknya adalah sebagai berikut:
Unggah Halaman Tampilan Hasil:
<! Doctype html> <html lang = "en" xmlns: th = "http://www.thymeleaf.org"> <hody> <h1> boot musim semi - unggah status </h1> <v: if = "$ {pesan}"> <h2 th: text = "$ {" if = "$ {pesan {h2 th: texs =" $Rendering adalah sebagai berikut:
4. Tulis kelas kontrol unggahan
Kunjungi LocalHost untuk secara otomatis melompat ke halaman unggahan:
@Getmapping ("/") public string index () {return "unggah";}Unggah pemrosesan layanan
@Postmapping ("/unggah") string publik SingleFileUpload (@RequestParam ("File") File multipartfile, redirectattributes redirectattributes) {if (file.isempty ()) {redirectattributes.addflashtribute ("pesan", "Harap pilih file untuk mengunggah); return "Redirect: unggahstatus"; } coba {// Dapatkan file dan simpan di suatu tempat byte [] bytes = file.getbytes (); Path path = paths.get (unggah_folder + file.getoriginalfileName ()); File.write (path, byte); redirectattributes.addflashattribute ("pesan", "Anda berhasil mengunggah '" + file.getoriginalFileName () + "'"); } catch (ioException e) {e.printstacktrace (); } return "redirect:/unggahtatus";}Kode di atas berarti bahwa informasi file dibaca melalui MultipartFile, jika file kosong, lompat ke halaman hasil dan berikan prompt; Jika aliran file tidak kosong dan ditulis ke direktori yang ditentukan, hasilnya akan ditampilkan pada halaman.
MultipartFile adalah kelas enkapsulasi untuk file yang diunggah pegas, yang berisi informasi seperti aliran biner dan atribut file. Atribut yang relevan juga dapat dikonfigurasi dalam file konfigurasi. Informasi konfigurasi dasar adalah sebagai berikut:
spring.http.multipart.enabled = true #default file unggah yang didukung.spring.http.multipart.file-size-threshold = 0 #support file penulisan ke disk.spring.http.multipart.location = # Temporary Directory untuk mengunggah file spring.http.http.multipart.location = # Temporary Direktori untuk mengunggah file ufuLoading spring.http.http.multipart.location = # Temporary Directory untuk mengunggah file unggahan spring.http.multipart.max-request-size = 10MB # ukuran permintaan maksimum yang didukung
Yang paling umum digunakan adalah dua konten konfigurasi terakhir, yang membatasi ukuran unggahan file. Jika file melebihi ukurannya, pengecualian akan dilemparkan saat mengunggah:
Untuk informasi konfigurasi lebih lanjut, silakan lihat di sini: Properti Aplikasi Umum
5. Penanganan Pengecualian
@ControllerAdvicepublic kelas GlobalExceptionHandler {@ExceptionHandler (MultipartException.class) Public String handleError1 (MultipartException E, Redirectattributes RedirectAttributes) {redirectattributes.addflashtribute ("pesan", e.getCause (). return "Redirect:/unggahstatus"; }}Atur @ControllerAdvice untuk memantau apakah ukuran file yang diunggah oleh Multipart terbatas. Ketika pengecualian ini terjadi, prompt diberikan di halaman front-end. Anda dapat melakukan banyak hal dengan @ControllerAdvice, seperti penanganan Global Unified Exception, dll. Siswa yang tertarik dapat datang untuk mempelajarinya.
6. Ringkasan
Demo sederhana mengunggah file menggunakan boot musim semi selesai. Siswa yang tertarik dapat mengunduh kode sampel dan mencobanya.
Lihat:
Kode Sampel - GitHub
Contoh kode kode kode
Meringkaskan
Di atas adalah apa yang diperkenalkan editor kepada Anda menggunakan fungsi unggahan file boot pegas. 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!