赞
踩
一、前端的要求
1.采用post方式提交数据
2.采用multipart格式上传文件
3.使用input的file控制上传
例:
- <form method="post" action="/common/upload" enctype="multipart/form-data">
- <input name="file" type="file"/>
- <input type="submit" value="提交" />
- </form>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.3.1</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.4</version>
- </dependency>
1.上传文件
使用MultipartFile来获取文件信息以及转存文件
代码如下(示例):
- @Value("${reggie.path}")
- private String reggiepath;
- /**
- * 文件上传
- */
- @PostMapping("/upload")
- public Result<String> upfile(MultipartFile file) {
- // 获取文件名
- String originalFilename = file.getOriginalFilename();
- // 获取文件后缀名
- String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
- // 用UUID随机生成文件名,防止文件名重复导入文件覆盖
- String filename = UUID.randomUUID().toString() + substring;
- // 判断当前文件是否存在
- File file1 = new File(reggiepath);
- if (!file1.exists()) {
- // 不存在,需要创建
- file1.mkdir();
- }
- // 保存文件到指定位置
- try {
- file.transferTo(new File(reggiepath + filename));
- } catch (IOException e) {
- throw new FileException("文件上传失败");
- }
- return Result.success(filename);
- }
2.下载文件
- /**
- * 文件下载
- */
- @GetMapping("/download")
- public void download(String name, HttpServletResponse response) {
- try {
- // 输入流,读取文件内容
- FileInputStream fileInputStream = new FileInputStream(new File(reggiepath+name));
- // 输出流,将文件写回浏览器
- ServletOutputStream servletOutputStream = response.getOutputStream();
- // 响应格式(图片)
- response.setContentType("image/jpeg");
- int len = 0;
- byte[] bytes = new byte[1024];
- while ((len = fileInputStream.read(bytes)) != -1) {
- servletOutputStream.write(bytes,0,len);
- servletOutputStream.flush();
- }
- fileInputStream.close();
- servletOutputStream.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
如果是springboot过程的话有默认,可以不用配置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。