Fungsi pengunggahan dan unduhan file telah digunakan dalam proyek terbaru. Saya pikir fungsi ini lebih penting, jadi saya secara khusus mengekstraknya dan mencobanya sendiri.
Berikut ini adalah langkah -langkah spesifik untuk mengunggah dan mengunduh file di lingkungan konfigurasi SpringMVC untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
1. Konfigurasi Dasar:
Paket Impor Maven dan Konfigurasi Pom.xml. Selain dependensi dasar SpringMVC, perlu untuk mengimpor commons-io.jsr dan commons-fileupload.jar yang digunakan saat mengunggah file:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/maven.romp.romp.romp. http://maven.apache.org/maven-v4_0_0.xsd "> <nodelversion> 4.0.0 </podelversion> <groupid> FilloadTest </groupid> <ArTifactId> FilloadTest </artifactid> <packaging> War </packaging> <tempel> 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. WEBAPP </name> <rurl> http://maven.apache.org </rerl> <build> <finalname> Filloadtest </finalname> <dlugin> <!- Konfigurasi berikut dapat memastikan bahwa versi JRE tidak akan berubah setiap kali pembaruan paksa, lalu Eclips saya4.4.1 dan maven3.5. Jika Anda tidak mengatur ini, JRE akan berubah kembali menjadi 1,5 setiap kali pembaruan paksa dipaksakan-> <lugin> <ArtifactId> Maven-Compiler-plugin </artifactid> <version> 2.3.2 </version> <source> 1.7 </source> <Target> 1.7 </target </versi encoding> <source> </source> <Target> 1.7 </target> <cincoding> UTF-8 <bootclasspath>${java.home}/lib/rt.jar</bootclasspath> </compilerArguments> </configuration> </plugin> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </Dependency> <dependency> <GroupId> org.springframework </groupid> <ArTifactId> Spring-WEBMVC </artifactid> <version> 4.0.6.release </version> </dependency> <troupid> <sroGact> JACKSON. <version> 2.2.3 </version> </gandendency> <dependency> <groupid> com.fasterxml.jackson.core </sroupid> <ArtifactId> Jackson-core </arttifactid> <version> 2.2.3 </versif> </Artacping> <sependency> <groupid> com.fasterxml.jackson.core> </artacid> <pergroupsid> <sroupid> com.fasterxml.jackson.core> <version> 2.2.3 </version> </dependency> <dependency> <GroupId> Commons-FileUpload </groupid> <ArTifactId> commons-Fileupload </arttifactid> <version> 1.3.1 </versi </Commons> <Arpidid> <Arpidid> Commons-io </Groupid> <Artifactid> Commons- Commons> Commons-Commons> </dependencies> </jadi Project>Konfigurasi Dasar Web.xml:
<? Xml Version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xmlns =" http://java.com/xmlns = "http://java.com/xmlns = xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "versi =" 2.5 "> <nilter> <pructer> filter charset </description> <tilter-name> encodingfilter </filter-name> <nilter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <Inch-ARam> <creckripe> encoding charset </creckripe> <param-name> encoding </param-name> <param-value> UTF-8 </param-Value> </init-parfaram> <filter-name> encodingfilter </filter-name> <ruct-pola>/*</url-pola> </filterpapping> <servlet> <servlet-name> springmvc </servlet-name> <servlet-class> <no-nour-classram.web.servlet. <param-value> classpath: spring.xml </param-value> </it-param> </servlet> <servlet-papping> <servlet-name> springmvc </servlet-name> <road-pattern>*. do </url-pola> </servlet-mapping> <dreades-f untuk-file>. <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
Spring Basic Configuration Spring.xml:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http:/schem.mp.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org. yang” ” XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring--3.0.xsd http:/wwww.spramework.orgemork.orgemork.orgemework/orgemork.orgemork.orgemork.orgemork.orgemork.orgework.orgemork.orgor.orger http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema <konteks: anotasi-konfigurasi /> <mvc: anotasi-driven /> <konteks: komponen-scan-package = "controllers" /> <!-untuk menghindari file unduhan dari kembali ke json ketika yaitu mengeksekusi jax-> <bean id = "mappingjacksonhtpmessageConverter"> <a name = "mappingjacksonhtpmessage"> <bean id = "mappingjacksonhtpmessage <value>text/html;charset=utf-8</value> </list> </property> </bean> <!-- To enable Spring MVC annotation function to complete the mapping of requests and annotations POJOs --> <bean > <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /><!-- json Converter-> </list> </prop Property> </bean> <!-Dukungan Upload file-> <bean id = "multipartresolver"> <!-100m-> <name properti = "maxuploadsize" value = "104857600"> </properti </properten = "beAntencoding" value = "104857600"> </properti> </property </properten = "beAncoding" value = "value =" uM value = "uT/uT/uT/property </properten>
2. Kode Upload File
Untuk index.html halaman sederhana yang diunggah, perhatikan pengaturan entype saat mengirimkan formulir:
<! Doctype html> <html> <head> <meta http-equiv = "tipe konten" content = "text/html; charset = utf-8"/> </head> <bod body> <bentuk action = ". type = "kirim" value = "kirim"/> </form> </body> </html>
Unggah Kode Java latar belakang yang sesuai. Untuk pertanyaan spesifik, silakan merujuk ke komentar:
pengontrol paket; impor java.io.file; impor java.io.ioException; impor java.util.iterator; impor javax.servlet.http.httpservletRequest; impor org.apache.commons.io.fileutils; impor org.springframework.http.httpheaders; impor org.springframework.http.httpstatus; impor org.springframework.http.mediatype; impor org.springframework.http.responseentity; impor org.springframework.stereotype.controller; impor org.springframework.web.bind.annotation.requestmapping; impor org.springframework.web.bind.annotation.requestmethod; impor org.springframework.web.bind.annotation.requestparam; impor org.springframework.web.multipart.multipartfile; impor org.springframework.web.multipart.multipartttpservletRequest; impor org.springframework.web.multipart.commons.Commonsmultipartresolver; @Controller kelas publik FileController { /** * Upload file * * @author: tuzongxun * @title: unggahfile * @param @param file * @param @param * @param @trows IllegalstateException * @param @throws ioException * @phrows @prows * @prows * @prows 28222222 Ujung @Metode = Permintaan. request.getSession (). getSerVletContext ()); // Tentukan apakah permintaan memiliki unggahan file, yaitu, jika (multipartresolver.ismultipart (request)) {// konversi ke permintaan multipart MultiparthttpservletRequest multirequest = (multipartttpservletRequest) permintaan; // Dapatkan semua nama file dalam permintaan iterator <string> iter = multirequest.getFileNames (); while (iter.hasnext ()) {// Dapatkan file unggah multipartfile f = multirequest.getFile (iter.next ()); if (f! = null) {// Dapatkan nama file dari file yang saat ini diunggah string myFileName = f.getoriginalFileName (); // Jika namanya bukan "", itu berarti file tersebut ada, jika tidak, itu berarti file tidak ada jika (myfileName.trim ()! = "") {// Tentukan path string unggahan, path string = "c: // pengguna // tuzongxun123 // desktop //" + myfilename; File localfile = file baru (path); f.transferto (localfile); }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}Setelah memilih file yang akan dikirimkan, Anda akan melihat bahwa file yang dipilih diteruskan ke lokasi yang ditentukan dalam kode. Render halaman adalah sebagai berikut
3. Unduh File
Unduhan file membutuhkan jalur penyimpanan file yang diunduh. Ini hanya diisi secara manual. Jika ada dalam proyek tertentu, Anda dapat menyimpan nama file dan jalur penyimpanan yang diunggah dalam database. Kemudian tambahkan halaman daftar file untuk menampilkan nama file dan jalur file, lalu klik untuk mengunggah nama file dan jalur yang sesuai ke operasi latar belakang saat mengunduh.
/ ** * Unduh File, Nama File dan Alamat File Diperlukan * * @Author: Tuzongxun * @Title: Unduh * @param @Param Nama * @param @param jalur * @param @return * @param @lemparan ioException * @ReturnResponstity <byte []> * @Date Apr 28.2016 1:21:21:32 pm * pm * pm * @restmapping @resty * @rest @rest @prect @nilai @nilai @nilai @ "/DownLoadFile.do") Public Responseentity <byte []> Unduh (@RequestParam ("name") Name String, @RequestParam ("FilePath") Path String) melempar ioException {file file = file baru (path); Header httpheaders = httpheaders baru (); String filename = string baru (name.getBytes ("UTF-8"), "iso-8859-1"); // Untuk menyelesaikan masalah header nama Cina yang kacau.setContentDispositionFormData ("lampiran", nama file); headers.setContentType (mediatype.application_octet_stream); mengembalikan responEntity baru <byte []> (fileutils.readfiletobyteArray (file), header, httpstatus.created); } Halaman HTML hanyalah isi sederhana dalam nama file dan jalur file, dan mengirimkannya ke latar belakang menggunakan formulir. Kemudian latar belakang akan mengontrol respons ke kotak pemilihan untuk menyimpan popup path file pada halaman. Tentu saja, saya tidak melakukan apa pun di latar belakang di sini. Jika file tidak ada, kesalahan akan dilaporkan. Anda dapat melakukan pemrosesan yang sesuai:
Unduh File:
</br> </br> <form Action = "./ downloadfile.do" style = "border: 1px solid grey; lebar: auto;" Method = "POST"> Nama file: <input type = "text" name = "name"/> </br> </br> path file: <input type = "text" name = "filePath"/> </br> </br> <input type = "kirim" value = "confirm download"/> </form>
Tampilan halaman adalah sebagai berikut:
Jika file tidak ada, kesalahannya adalah sebagai berikut:
Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.