目录
一.增删改查测试
二、上传
1、流程
1、springmvc.xml中添加多功能解析器配置
导入pom
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 必须和用户JSP 的pageEncoding属性一致,以便正确解析表单的内容 --> <property name="defaultEncoding" value="UTF-8"></property> <!-- 文件最大大小(字节) 1024*1024*50=50M--> <property name="maxUploadSize" value="52428800"></property> <!--resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常--> <property name="resolveLazily" value="true"/> </bean>
2、前台的页面 添加 多功能表单设置 multipart/form-data
3、后台要利用multipartFile类进行 文件接收
注:multipartFile的属性名一定要跟form中的表单属性名一致
dto
import com.hz.model.Clazz; import org.springframework.web.multipart.MultipartFile; /** * @author louis * @create 2022-08-18 21:35 */ public class ClazzDto extends Clazz { private MultipartFile picFile; public MultipartFile getPicFile() { return picFile; } public void setPicFile(MultipartFile picFile) { this.picFile = picFile; } }
5、编写web层文件
ClazzController
// 文件上传 @RequestMapping("/upload") public String upload(ClazzDto clazzDto){ try { //前台上传的文件 MultipartFile picFile = clazzDto.getPicFile(); //实际应该配置到resource.properties中 String diskPath="D:/temp/新建文件夹/";//图片存放地址 //http://localhost:8080/upload/mvc/...png String requestPath="/upload/mvc/";//数据库保存地址,也是访问地址 //拿到上传文件的名字 String filename = picFile.getOriginalFilename(); FileUtils.copyInputStreamToFile(picFile.getInputStream(),new File(diskPath+filename)); //将图片上传图片之后,并且将图片地址更新到数据库中 Clazz clazz=new Clazz(); clazz.setCid(clazzDto.getCid()); clazz.setPic(requestPath+filename); this.clazzBiz.updateByPrimaryKeySelective(clazz); }catch (Exception e){ e.printStackTrace(); } return "redirect:/clz/list"; }
三、下载
流程
1、点击下载传递文件的ID,通过文件的ID查询出文件的路径
2、通过文件的请求地址,转换成文件存放的硬盘地址
3、将硬盘中文件下载下来——>固定代码
@RequestMapping(value="/download") public ResponseEntity<byte[]> download(Clazz clazz, HttpServletRequest req){ try { //先根据文件id查询对应图片信息 Clazz clz = this.clazzBiz.selectByPrimaryKey(clazz.getCid()); String diskPath = "D:/Temp/images/"; String reqPath = "/upload/mvc/"; String realPath = clz.getPic().replace(reqPath,diskPath); String fileName = realPath.substring(realPath.lastIndexOf("/")+1); //下载关键代码 File file=new File(realPath); HttpHeaders headers = new HttpHeaders();//http头信息 String downloadFileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");//设置编码 headers.setContentDispositionFormData("attachment", downloadFileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //MediaType:互联网媒介类型 contentType:具体请求中的媒体类型信息 return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK); }catch (Exception e){ e.printStackTrace(); } return null; }