springMVC

    xiaoxiao2022-06-28  51

    springMVC文件上传

     

    增加上传组件依赖:

    In the case of the CommonsMultipartResolver, you need to use commons-fileupload.jar.

    apache-commons-io.jar

    apache-commons-fileupload.jar

     

    Xml代码   <!-- fileupload -->   <dependency>       <groupId>commons-io</groupId>       <artifactId>commons-io</artifactId>       <version>2.4</version>   </dependency>   <dependency>       <groupId>commons-fileupload</groupId>       <artifactId>commons-fileupload</artifactId>       <version>1.3</version>   </dependency>    

     

     

     

    配置文件上传相关配置,springMVC.xml配置如下:

     

     

    Xml代码   <?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:p="http://www.springframework.org/schema/p"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:mvc="http://www.springframework.org/schema/mvc"       xsi:schemaLocation="        http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context.xsd           http://www.springframework.org/schema/mvc           http://www.springframework.org/schema/mvc/spring-mvc.xsd">              <!-- 自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter -->       <!-- 两个bean 是spring MVC为@Controllers分发请求所必须的  -->       <mvc:annotation-driven/>          <!-- 配置需要被扫描的包 -->       <context:component-scan base-package="com.gc.springmvc.controller"/>          <!-- 配置对静态资源文件的访问不被过滤 WebContent/resources目录中的文件都能访问 -->       <mvc:resources location="/resources/" mapping="/resources/**"/>              <!-- 配置返回的数据如何呈现:前缀+逻辑视图+后缀 -->       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">       <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />            <property name="prefix" value="/WEB-INF/jsp/"/>           <property name="suffix" value=".jsp"/>       </bean>              <!-- 文件上传 -->       <bean id="multipartResolver"             class="org.springframework.web.multipart.commons.CommonsMultipartResolver">           <!-- Default is ISO-8859-1 -->           <property name="defaultEncoding" value="UTF-8"/>           <!-- Default is 10240 -->           <property name="maxInMemorySize" value="10240"/>           <!-- -1 indicates no limit (the default) -->           <property name="maxUploadSize" value="100000"/>           <!-- javax.servlet.context.tempdir(the default) 临时文件存放目录,不是最终目录!-->           <property name="uploadTempDir" value="/tempdir"/>       </bean>          </beans>    

     

    上传页面

    Html代码   <form action="fileupload" method="post" enctype="multipart/form-data">       文件名称:       <input type="text" name="name"/> <br/>       选择文件:       <input type="file" name="file"/> <br/>       <input type="submit"/>       </form>  

     

    上传控制器

    Java代码   package com.gc.springmvc.controller;      import java.io.File;   import java.util.Date;      import javax.servlet.ServletContext;      import org.springframework.stereotype.Controller;   import org.springframework.web.bind.annotation.RequestMapping;   import org.springframework.web.bind.annotation.RequestMethod;   import org.springframework.web.bind.annotation.RequestParam;   import org.springframework.web.context.ServletContextAware;   import org.springframework.web.multipart.commons.CommonsMultipartFile;   import org.springframework.web.servlet.view.InternalResourceViewResolver;      @Controller   public class FileUploadController implements ServletContextAware{              private ServletContext servletContext;              public void setServletContext(ServletContext servletContext) {           this.servletContext = servletContext;       }              /**       * 文件上传       * @param assignedName 为文件指定新的名称       * @param file  上传的文件       * @return       */       @RequestMapping(value={"fileupload"}, method=RequestMethod.POST)       public String fileupload(@RequestParam("name")String assignedName,@RequestParam("file")CommonsMultipartFile file) {           String viewName = "uploadSuccess";           if(!file.isEmpty()) {               //通过servletContext获取到文件的绝对路径               String realPath = servletContext.getRealPath("/upload");               System.out.println("文件被保存到:"+realPath);                              System.out.println("指定的名称:"+assignedName);                              String originalFileName = file.getOriginalFilename();               System.out.println("原始名称:"+originalFileName);                              String fileType = originalFileName.substring(originalFileName.lastIndexOf("."));               System.out.println("文件类型:"+fileType);                              File targetFile = new File(realPath, assignedName+"-"+new Date().getTime()+fileType);               try {                   file.getFileItem().write(targetFile);               } catch (Exception e) {                   e.printStackTrace();                   viewName = "uploadFailure";               };           }           //重定向           return InternalResourceViewResolver.REDIRECT_URL_PREFIX+viewName;       }              /**       * 返回成功视图        */       @RequestMapping(value="uploadSuccess")       public String uploadSuccess() {           return "uploadSuccess";       }              /**       * 返回失败视图        */       @RequestMapping("uploadFailure")       public String uploadFailure() {           return "uploadFailure";       }      }  
    转载请注明原文地址: https://ju.6miu.com/read-1124484.html

    最新回复(0)