springMVC图片上传

1|0思路

  1. 首先检查文件后缀是否是合法(比如.png,.jpg),列出对应的媒体类型(image/png,image/jpeg)
  2. 检查文件的内容是否是图片,防止破坏者将脚本后缀改为图片格式,图片是有宽和高的
  3. 保存到图片服务器,比如fastDFS图片存储服务器
  4. 回显Url(本案例将本地作为图片存储服务器,本地配置了一个域名,使用nginx代理到存储目录)

2|0实例代码

@Service public class UploadServiceImpl implements UploadService { //保存日志的对象 private static final Logger logger = LoggerFactory.getLogger(UploadController.class); // 允许存储的文件类型白名单 private static final List<String> suffixes = Arrays.asList("image/png", "image/jpeg"); public String upload(MultipartFile file) { try { // 校验文件类型 String type = file.getContentType(); if (!suffixes.contains(type)) { //此处的{}相当于字符串的占位符 logger.info("上传失败,文件类型不匹配:{}", type); return null; } // 校验图片内容 BufferedImage image = ImageIO.read(file.getInputStream()); if (image == null) { logger.info("上传失败,文件内容不符合要求"); return null; } // 生成保存目录 File dir = new File("G:\\LeYou\\upload"); if (!dir.exists()) { dir.mkdirs(); } //保存图片,第一个参数是路径,第二个参数是文件名,使用MultipartFile file获取源文件文件名 file.transferTo(new File(dir, file.getOriginalFilename())); // 拼接图片地址, String url = "http://image.leyou.com/upload/" + file.getOriginalFilename(); return url; } catch (Exception e) { return null; } } }

__EOF__

本文作者程序员小宇
本文链接https://www.cnblogs.com/treasury/p/12872321.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   程序员小宇  阅读(245)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示