Basta olhar para o código, os comentários estão todos dentro
Primeiro de tudo, web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <description>Configure the front-end controller of SpringMVC</description> <servlet-name>upload</servlet-name> <Vertlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <itir--param> <amam-name> contextConfigLocation </param-name> </param-value> Classpath: ApplicationContext.xml </param-vale> </irt-Param> carretlet> load-lott> <1 load> <Verlet-name> upload </servlet-name> <url-tattern>/</url-pattern> </servlet-mapping> <filter> <cription> Resolva problemas distorcidos na entrega de parâmetros </cription> <filter-name> caracterecodingutf8 </filter-name> <filtro-class> org.springFrameframeswal.web.ilf8 </filter-name> <filster-clas> org.sprestringFrameframe.web.ilf8 </am-param> <amam-name> codificação </param-name> <amul-value> utf-8 </param-value> </init-param> </ftrids> <filter-mapping> <filter-name> caracterencodingutf8 </filter-name> <url-Pattern>/*</url-tattern> </filter-mappping> </filter-mappping> </filter-name> <url-Pattern>/*</url-tattern> </filter-mapping>
Abaixo está localizado em //src//applicationContext.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- Start Spring's component automatic scanning mechanism (Spring will automatically scan the classes and subpackages specified by base-package) --> <!-- Here you can refer to my article http://blog.csdn.net/jadyer/article/details/6038604 --> <context:component-scan base-package="com.jadyer"/> <!-- Start SpringMVC annotation function, it will automatically register related instances of HandlerMapping, HandlerAdapter, and ExceptionResolver-> <MVC: Anotação orientada/> <!-Como o SpringMVC está definido em web.xml para interceptar todas as solicitações, ele não será lido ao ler arquivos de recursos estáticos-> <!-Através desta configuração, você pode especificar todos os recursos que solicitam "/js/**" e serão encontrados para "/js/" "-"-Mestes/js/js/js/" Localização = "/js/"/> <mvc: Recursos Mapping = "/upload/**" location = "/upload/"/> <!-Ao fazer o upload de arquivos por springmvc, você precisa configurar o processador multipartResolver-> <bean id = "multipartResolver"> <!-especificar que o tamanho total do tamanho total do tamanho do tamanho total do tamanho do size o tamanho do size o tamanho do size o tamanho do size do size o tamanho do size. maxUploadSize property is not for a single file, but for the sum of the capacity of all files--> <property name="maxUploadSize" value="800000"/> </bean> <!-- When SpringMVC exceeds the upload file limit, it will throw org.springframework.web.multipart.MaxUploadSizeExceededException --> <!-- This exception was thrown by SpringMVC when checking uploaded file information, and it has not entered the Controller method at this time --> <bean id="exceptionResolver"> <property name="exceptionMappings"> <props> <!-- When encountering a MaxUploadSizeExceededException exception, it will automatically jump to /WEB-INF/jsp/error_fileupload.jsp--> <prop key = "org.springframework.web.multipart.maxuploadSizeExcedException"> error_fileupload </spop> </sports> </propriedade> </bean> <iperation> <names name = "prefix" value "/web-in/jsp/"//> <propriedades>
A seguir, a página de prompt ao fazer o upload do conteúdo do arquivo é muito grande //web-inf//jsp//error_fileupload.jsp
<%@ Page Language = "Java" PageEncoding = "UTF-8"%>
<H1> O arquivo é muito grande, por favor selete </h1>
Abaixo está a página de upload para selecionar arquivos index.jsp
<%@ Page Language = "Java" PageEncoding = "utf-8"%> <!-Isso não pode ser abreviado como <script type = "text/javascript" src = ".." // js/jQuery-1.10.2.min.js "> </script> <script type =" text/javsscrint "" src = "<%= request.getContextPath ()%>/js/ajaxfileupload.js"> </script> <script type = "text/javascript" src = "<%= request.getContextPath ()%>/js/ajaxxxiTepload.js"> </scritpath ()%>/js/ajaxxxxiPLOAD.JS "> </scrutpath ()%>> ajaxfileUpload () {// Uma imagem é exibida ao fazer upload de um arquivo e o upload do arquivo é concluído para ocultar a imagem // $ ("#carregamento"). Ajaxstart (function () {$ (this) .show ();}) $ .AJAXFILEUPLOAD ({// O endereço do servidor da operação de upload de arquivos (os parâmetros podem ser passados e foi testado pessoalmente) URL: '$ {PageContext.request.ContextPath}/Test/FileUpload? // o atributo ID Datatype: 'texto', // O formato retornado pelo servidor pode ser JSON ou XML, etc. Sucesso: function (dados, status) {// a função de processamento data = data.replace ("<pre>", ''); // ajaxfileUpload adicionará o sufixo de <pre> texto </pre> ao conteúdo de texto ao qual o servidor responde de volta. dados = data.replace ("</pre>", ''); dados = data.replace ("<pre>", ''); dados = data.replace ("</pre>", ''); dados = data.replace ("</pre>", ''); //In this example, after the upload file is completed, the server will return to the foreground [0`filepath] if(data.substring(0, 1) == 0){ //0 means uploading successfully (superhes the file path after upload), 1 means failure (superhes the failure description) $("img[id='uploadImage']").attr("src", data.substring(2)); $ ('#resultado'). html ("upload de imagem com sucesso <br/>"); } else {$ ('#resultado'). html ('O upload da imagem falhou, tente novamente!'); }}, erro: function (dados, status, e) {// a função de processamento $ ('#resultado'). html ('O upload da imagem falhou, tente novamente !!'); }});} </script> <div id = "resultado"> </div> <img id = "uploadImage" src = "http://www.firefox.com.cn/favicon.ico"> <input Type = "file" = "myBlogimage" name = "MyFiles" OnClick = "AjaxfileUpload ()"/> <!-Introdução ao site oficial do AjaxfileUpload: http://phpletter.com/our-projects/ajaxfileupload/introduction: jQuery plug-in ajaxfileUPLOAD pode alcançar os filmes de refrLe-free- Tem muitos usuários. Vale muito a pena recomendar: a ordem de introdução de JS (depende do jQuery) e não há formulários na página (ela aciona apenas o método AjaxFileUpload () quando o botão é clicado) erros e soluções comuns são os seguintes 1) SyntaxError: ausente; Antes da instrução -Verifique se o caminho do URL pode ser acessado 2) SyntaxeRor: Erro de sintaxe -Verifique se o arquivo JSP que lida com a operação de envio possui erro de sintaxe 3) SyntaxeRor: ID da propriedade inválida -Verifique se o nome da propriedade é existente) ou não é o synTaxError: o nome da expressão do arquivo 4) ou não é o nome do arquivo. Erro de $ variável, que é muito mais conveniente do que os avisos de erro inválidos acima -> Finalmente, o FileUploadController.java que lida com o upload do arquivo
pacote com.jadyer.controller; importar java.io.file; importar java.io.ioException; importar java.io.printwriter; importar javax.servlet.http.httpServletReQuest; import javax.serv.http.hTtletLeSonspon; org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;/** * File upload in SpringMVC* 1) Since SpringMVC uses commons-fileupload implementation, it must first introduce its components into the project* 2) Configure the MultipartResolver processor in the SpringMVC configuration file (the attribute restrictions on uploaded files can be added here) * 3) Add the MultipartFile parameter to the Controller method (this parameter is used to receive the content of the file component in the form) * 4) Write the foreground form (note Enctype = "Multipart/Form-Data" e <input type = "file" name = "****"/>)*ps: como ajaxfileupload.js é usado aqui para obter upload sem atualização, o formulário não é usado neste exemplo* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Spring-Context-3.2.4.Release.Jar * Spring-core-3.2.4.Release.Jar * Spring-Expression-3.2.4.Release.Jar * Spring-jdbc-3.2.4.Release.Jar * Spring-oxm-3.2.4.release.Jar * Spring-TX-3.2.4.RELEASE.JAR * Spring-WeBeB. Spring-web-3.2.4.Release.Jar * Spring-Web-3.2.4.Release.Jar * Spring-Webmvc-3.2.4.Release.jar * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- After uploading the file, return to the foreground [0`filepath], 0 means uploading successfully (sequent to the uploaded file path), 1 means failure (sequent to the failure description) */ @RequestMapping(value="/fileUpload") public String addUser(@RequestParam("uname") String uname, @RequestParam MultipartFile[] myfiles, HttpServletRequest solicitação, httpServletResponse resposta) lança IoException {// Você pode receber outros parâmetros enquanto carrega o arquivo de arquivo System.out.println ("Usuário recebido [" + uname + "] solicitação de upload de arquivo"); // Se você estiver usando o servidor TomCat, o arquivo será carregado para //%tomcat_home%// webapps // yourwebproject // upload // pasta // a classe Commons.io.fileutils é usada para implementar operações de upload de arquivos aqui. Ele determinará automaticamente se existe /upload existe. Se não existir, criará automaticamente String realpath = request.getSession (). GetServletContext (). GetRealPath ("/upload"); // Defina a resposta do formato de dados para o conteúdo do primeiro plano Response.SetContentType ("Text/Plain; charset = utf-8"); // Defina o objeto PrintWriter que responde ao conteúdo de primeiro plano PrintWriter Out = Response.getWriter (); // o nome original do arquivo de upload (ou seja, o nome do arquivo antes de fazer upload) string originalfilename = null; /Se você apenas carrega um arquivo, só precisará receber o arquivo no tipo multipart -arquivo e não há necessidade de especificar explicitamente a anotação @RequestParam // se desejar fazer upload de vários arquivos, você precisará usar o tipo MultiPtFile [] para receber o tipo de arquivo e especificar o número de filmes, e especificar o número de filmes, e especificar o número de filmes e usar o número de filmes e usar o número de filmes e usar o número de filmes e usar o tipo de ftetfile [] para receber o tipo de linha e usar o tipo de linha de uso, e especificar o número de filmes, e especificar o número de filmes e usar o número de filmes e usar o número de filmes e usar o número de filmes e usar o número de filmes e especificar o número de filmes, e especificar o número de filmes e usar o número de filmes e usar o número de filmes e a sessão de compras), e especificará o número de filmes, e especificará o número de filmes e a utlet/whour). MyFiles, caso contrário, os myfiles no parâmetro não podem obter todos os arquivos carregados para (MultipartFile myFile: myFiles) {if (myfile.isempty ()) {out.print ("1`Pline, selecione o arquivo e faça o upload"); out.flush (); retornar nulo; } else {originalfilename = myfile.getoriginalfilename (); System.out.println ("Nome original do arquivo:" + originalfilename); System.out.println ("Nome do arquivo:" + myfile.getName ()); System.out.println ("comprimento do arquivo:" + myfile.getSize ()); System.out.println ("Tipo de arquivo:" + myfile.getContentType ()); System.out.println("======================================================================================================== System.out.println ("======================================================================================================================================================================================= ====================================================================================================== ====================================================================================================== ============================================================================================================================ Depois {System.out.println (File ["Originalfilename +"] Falha, a faixa de pilha é a seguinte "); [D: /devell/apache-tomcat-6.0.36/webapps/ajaxfileupload//upload/anger birds.jpg] //system.out.println(path + "//" OriginalFilename)/// a saída do Windows é [/ajAxiling + "//" Originalfilename); //System.out.println (request.getContextPath () + "/upload/" + originalfilename); // A recomendação de [RealPath + "//" + originalFileName] não é recomendado // porque <img src = "arquivo: //// d: /aa.jpg"> pode ser exibido pelo Firefox no Windows e <img src = "d: /a.jpg"> Originalfilename); out.flush (); retornar nulo; }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.