首页 > 编程语言 > 详细

spring-mvc实现网页文件上传

时间:2021-06-08 21:37:34      阅读:33      评论:0      收藏:0      [点我收藏+]

1 文件上传

1.1 表单要求【注意】

要求1:表单必须是post请求

要求2:form标签必须有enctype="multipart/form-data"

要求3:必须要有文件上传项,type="file"

<form action="uploadController/upload" method="post" enctype="multipart/form-data">
  <!--文件上传表单的name属性值一定要与controller处理器中方法的参数对应,否则无法实现文件上传-->
  上传LOGO:<input type="file" name="files"/><br/>
  上传照片:<input type="file" name="files"/><br/>
  上传任意文件:<input type="file" name="files"/><br/>
  <input type="submit" value="上传"/>
</form>

1.2 Spring MVC文件上传步骤

【第一步】:导入commons-fileupload依赖
【第二步】:在spring-mvc.xml中配置CommonsMultipartResovler解析器
【第三步】:在Controller中编写方法接收实现文件上传

【第一步】:导入commons-fileupload依赖

<!--文件上传-->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.3</version>
</dependency>

【第二步】:在spring-mvc.xml中配置CommonsMultipartResovler解析器

<!--
        配置文件上传解析器
        id固定值是:multipartResolver
     -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <!--上传的所有文件的最大大小,最大100m-->
  <property name="maxUploadSize" value="104857600"/>
  <!--上传的单个文件大小,最大10m-->
  <property name="maxUploadSizePerFile" value="10485760"/>
  <!--中文文件名编码-->
  <property name="defaultEncoding" value="utf-8"/>
</bean>

【第三步】:在Controller中编写方法接收实现文件上传

@Controller
@RequestMapping("/uploadController")
public class UploadController {

  @RequestMapping("/upload")
  @ResponseBody
  public void doUpload(MultipartFile[] files, HttpServletRequest request) throws IOException {
    //System.out.println(file.getSize());//获取文件大小
    //System.out.println(file.isEmpty()); //是否是空文件
    //System.out.println(file.getBytes().length);  //获取文件字节数组的大小,和size一样
    //System.out.println(file.getOriginalFilename()); //文件名:头图 (2).jpg
    //System.out.println(file.getName()); // 表单的name属性
    //将上传的文件保存到服务器硬盘中
    if(files!=null && files.length>0){
      for (MultipartFile multipartFile : files) {
        //1 获取上传的目录
        String realPath = request.getServletContext().getRealPath("/upload");
        //2 生成唯一的文件名
        //2.1 获取到原始文件名
        String filename = multipartFile.getOriginalFilename();
        //2.2 生成唯一UUID
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        //2.3 获取文件的后缀名
        String suffix=filename.substring(filename.lastIndexOf(".")); //.jpg
        //2.4 组合成新的文件名
        filename=uuid+suffix;
        //3 保存到目录中
        multipartFile.transferTo(new File(realPath,filename));
      }
    }
  }
}

注意事项

问题1:上传多个文件如何接收?

问题2:如何解决文件重名问题?

注意事项:
技术分享图片

spring-mvc实现网页文件上传

原文:https://www.cnblogs.com/zijing314/p/14864392.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!