SpringBoot实现一个文件上传服务
更新记录
发布日期:2021-06-29 15:52:09
浏览次数:4
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月08日 10时56分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
NC自定义日志输出
2019-04-30
NC按钮增加风车加载页面
2019-04-30
NC 点击图片放大
2019-04-30
JAVA 文件类型识别
2019-04-30
NC6 业务参数操作
2019-04-30
NC 一次更新1000条以上数据
2019-04-30
NC 在后台使用System.out打印
2019-04-30
NC ws接口防XXE注入
2019-04-30
NC sql信息打印控制台
2019-04-30
NC6 弹窗显示网页
2019-04-30
NC6 对组件进行AOP编程
2019-04-30
Docker 镜像使用
2019-04-30
Android集成佳博热敏打印机打印小票对齐问题
2019-04-30
Android集成佳博热敏打印机打印小票商品名称换行问题
2019-04-30
2017年终总结
2019-04-30
架构的理解
2019-04-30
Android ARouter 跳转传递object失败解决
2019-04-30
AndroidStudio依赖Moudle安装时出现2个应用程序图标
2019-04-30
设计模式分类及UML汇总
2019-04-30