SpringBootJava实现文件上传下载功能-创新互联
SpringBoot实现文件上传下载功能
配置和前端页面
当前标题:SpringBootJava实现文件上传下载功能-创新互联
文章转载:http://scyanting.com/article/hoghe.html
- maven配置文件
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf
- 前端页面
Title 文件上传[[${filename}]]
文件下载
- webconfig配置
@Configuration
public class MyWebAppConfigurer implements WebMvcConfigurer {@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 用于前端匹配路径 /AAA-uploaded/** 的时候 可以直接定位到D://AAA-uploaded/图片存储的地址
// 用于前端页面渲染图片
registry.addResourceHandler("/AAA-uploaded/**").
addResourceLocations("file:/" + "D://AAA-uploaded/");
}
}
- yaml配置文件
server:
port: 8080
my-config:
file-path: D:\
文件上传功能MultipartFile接收前端传来的文件
成都创新互联主营前郭网站建设的网络公司,主营网站建设方案,成都APP应用开发,前郭h5微信小程序开发搭建,前郭网站营销推广欢迎前郭等地区企业咨询
@Value("${my-config.file-path}")
private String myFilePath;
@RequestMapping("upload")
public String upload(@RequestParam("file") MultipartFile file, Model model) {try {// 避免图片名字重复 采用时间戳+图片名
String fileName = System.currentTimeMillis() + file.getOriginalFilename();
// 获取图片存放路径
String destFileName = myFilePath + "AAA-uploaded" + File.separator + fileName;
File destFile = new File(destFileName);
// 判断上一级目录是否存在 不存在则创建
if (!destFile.getParentFile().exists()) {destFile.getParentFile().mkdirs();
}
// 移动文件到指定目录下
file.transferTo(destFile);
// 存放到页面用于回显测试
model.addAttribute("filename", "AAA-uploaded/" + fileName);
} catch (Exception e) {e.printStackTrace();
return "上传失败," + e.getMessage();
}
return "index";
}
文件下载功能ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文
@Value("${my-config.file-path}")
private String myFilePath;
@ResponseBody
@RequestMapping("/download")
public ResponseEntitytestResponseEntity(@RequestParam(value = "imageName", required = false) String filename) throws IOException {// 获取图片名称返回给页面用于下载
String name = filename.split("/")[1];
File newfile = new File("D:/AAA-uploaded" + File.separator + name);
if (!newfile.exists()) {throw new IOException(name + "文件不存在");
}
// 创建输入流
InputStream is = new FileInputStream(newfile);
// 创建字节数组
byte[] bytes = new byte[is.available()];
// 将流读到字节数组中
is.read(bytes);
// 创建HttpHeaders对象设置响应头信息
MultiValueMapheaders = new HttpHeaders();
// 设置要下载方式以及下载文件的名字
headers.add("Content-Disposition", "attachment;filename="+ name);
// 设置响应状态码
HttpStatus statusCode = HttpStatus.OK;
// 创建ResponseEntity对象
ResponseEntityresponseEntity = new ResponseEntity<>(bytes, headers, statusCode);
// 关闭输入流
is.close();
return responseEntity;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前标题:SpringBootJava实现文件上传下载功能-创新互联
文章转载:http://scyanting.com/article/hoghe.html