SpringBoot实现一个文件上传服务
更新记录
发布日期:2021-06-29 15:52:09
浏览次数:3
分类:技术文章
本文共 3707 字,大约阅读时间需要 12 分钟。
文章目录
2021/1/1 1:00 am 单文件上传实现
2020/1/1 16:30 pm 多文件上传实现,前端跨与请求配置
需求
- 文件上传,返回一个url,使用url可以直接访问该资源
- 上传文件存放在本机非SprngBoot项目静态资源位置
- 多文件上传
- 解决跨与请求
实现
- 配置
application.yaml
定义一个存放上传文件的位置
web: upload-path: /xxx/uploadFile/
单文件
- controller
@RestControllerpublic class FileUploadController { @Value("${web.upload-path}") String fileDir; @PostMapping("upload") public Map upload(MultipartFile file, HttpServletRequest request){ String realPath = fileDir; File folder= new File(realPath); if (!folder.exists()){ folder.mkdirs(); } String oldName=file.getOriginalFilename(); String newName= UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf(".")); Mapresult=new HashMap<>(); try { file.transferTo(new File(folder,newName)); String url=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/file/"+newName; result.put("status","ok"); result.put("url",url); } catch (IOException e) { result.put("status","failed"); result.put("msg",e.getMessage()); } return result; }}
上面的controller会返回给用户一个类似于http://localhost:8080/file/xxx.jpg
- 配置静态资源映射
@Configurationpublic class MyWebMvcConfig extends WebMvcConfigurationSupport { @Value("${web.upload-path}") private String uploadFilePath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/file/**").addResourceLocations("file:"+uploadFilePath); //这句不要忘了,否则项目默认静态资源映射会失效 registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); super.addResourceHandlers(registry); }}
多文件
@PostMapping("uploadMul")public Map upload(MultipartFile[] files, HttpServletRequest request){ Mapresult=new HashMap<>(); int count=0; List
跨域请求
跨域请求在后端配置即可
可以全局放行,也可以只针对某些地址允许- 全局允许跨域请求
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.springframework.web.filter.CorsFilter;@Configurationpublic class GlobalCorsConfig { @Bean public CorsFilter corsFilter(){ CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.setAllowCredentials(false); corsConfiguration.addAllowedMethod("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addExposedHeader("*"); UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource(); configurationSource.registerCorsConfiguration("/**",corsConfiguration); return new CorsFilter(configurationSource); }}
- 参考资料
转载地址:https://console.blog.csdn.net/article/details/112057935 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月13日 18时36分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于ssh的学生宿舍管理系统
2019-04-29
基于ssm的在线招标系统的设计与实现
2019-04-29
基于vue框架的在线问卷的设计
2019-04-29
java的酒店房间管理系统
2019-04-29
基于Java的截图工具
2019-04-29
基于JAVA的停车场管理系统
2019-04-29
基于SSM的网上购物系统的设计与开发
2019-04-29
基于SSM框架的BS微博系统的设计与实现
2019-04-29
超市订单管理系统
2019-04-29
基于ssm的民宿网站
2019-04-29
基于JavaWeb的物流管理系统的设计与实现
2019-04-29
基于Java的飞机大战游戏的设计与实现论文
2019-04-29
基于java实现的超级马里奥游戏
2019-04-29
keepalived 实现高可用,负载均衡
2019-04-29
linux发送邮件通知
2019-04-29
linux不删除文件:替换rm命令
2019-04-29
Centos6 搭建lnmp环境
2019-04-29
Hbase优化:使用压缩snappy,lz4
2019-04-29
maven 安装第三方jar包到本地仓库
2019-04-29
hbase数据结构模型
2019-04-29