springMVC文件上传
1.前端文件的上传
1.1条件
文件上传的要求:
1.前端: 使用
2.对表单要求
1) method必须是post, 不能是get, 请求参数通过url传递数据, 文件无法在url传递,get提交方式数据限制大小
2) form标签的enctype属性(请求参数传递给后台需要进行怎样的编码), multipart/form-data
2.后端对文件的下载
2.1配置文件
导入依赖:
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
在SpringMVC的配置文件中.配置一个文件上传的组件
<!--配置文件上传解析器
注意: id值一定是multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置最大的上传文件大小 :10M = 10 *1024*1024 B
单位 字节
-->
<property name="maxUploadSize" value="10485760"></property>
</bean>
2.2编写controller
package com.fiction.contraller;
import com.fiction.constant.ResponseData;
import com.fiction.constant.ResponseDataUtil;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
@Controller
@ResponseBody
@RequestMapping("/up")
public class UpImg {
@RequestMapping("/load")
public ResponseData upImg(MultipartFile images){
//把上传的文件保存到服务器的硬盘 d:/upload
String savePath = "D:/upload";
File savePathFile = new File(savePath);
if(!savePathFile.exists()){ //不存在
//创建目录
savePathFile.mkdirs();
}
//上传文件名问题: 系统分配, 文件名唯一 1) UUID 2) 时间戳 3) 用户名+时间戳 用户名+uuid+时间戳
//后缀名: 上传文件的后缀名, 得到上传文件名 getName() 获取请求参数名 getOriginalFilename() 获取上传的文件名
String uploadFileName = images.getOriginalFilename();
String suffix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
String saveFileName =System.currentTimeMillis()+suffix;
File saveFile = new File(savePathFile,saveFileName);
//transferTo(File)
//保存文件
try {
images.transferTo(saveFile);
} catch (IOException e) {
e.printStackTrace();
}
return ResponseDataUtil.buildOk("文件上传成功");
}
}
3.前端对后端文件的请求
3.1配置访问的位置
选择External Source 选择自己存储文件的位置
访问途径http://127.0.0.1:tomcat端口号/路径/图片名称
http://127.0.0.1:8080/mybatis/p1.png