文件上传


前端请求基本要素

enctype 取值必须是:multipart/form-data
method 属性取值必须是 Post

依赖jar包

jar 包:
Commons-fileupload 和 commons-io

前端页面

<form action="/fileUpload" method="post" enctype="multipart/form-data">
名称:<input type="text" name="picname"/><br/>
图片:<input type="file" name="uploadFile"/><br/>
<input type="submit" value="上传"/>
</form>

控制器


@Controller("fileUploadController")
public class FileUploadController {
  @RequestMapping("/fileUpload")
  public String testResponseJson(String picname,MultipartFile 
    uploadFile,HttpServletRequest request) throws Exception{
    //定义文件名
    String fileName = "";
    //1.获取原始文件名
    String uploadFileName = uploadFile.getOriginalFilename();
    //2.截取文件扩展名
    String extendName = 
    uploadFileName.substring(uploadFileName.lastIndexOf(".")+1, 
    uploadFileName.length());
    //3.把文件加上随机数,防止文件重复
    String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
    //4.判断是否输入了文件名
    if(!StringUtils.isEmpty(picname)) {
      fileName = uuid+"_"+picname+"."+extendName;
    }else {
      fileName = uuid+"_"+uploadFileName;
    }
    System.out.println(fileName);
    //2.获取文件路径
    ServletContext context = request.getServletContext();
    String basePath = context.getRealPath("/uploads");
    //3.解决同一文件夹中文件过多问题
    String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
    //4.判断路径是否存在
    File file = new File(basePath+"/"+datePath);
    if(!file.exists()) {
      file.mkdirs();
    }
    //5.使用 MulitpartFile 接口中方法,把上传的文件写到指定位置
    uploadFile.transferTo(new File(file,fileName));
    return "success";
  }
}

配置文件解析器

<!-- 配置文件上传解析器 -->
<!-- id 的值是固定的-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <!-- 设置上传文件的最大尺寸为 5MB 5242880 = 1024*1024*5-->
  <property name="maxUploadSize">
    <value>5242880</value>
  </property>
</bean>

文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录