zoukankan      html  css  js  c++  java
  • springMVC图片上传

    思路

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

    实例代码

    
    @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;
            }
        }
    }
  • 相关阅读:
    javascript游戏引擎
    BI 可视化
    nodeJS 相关开源项目
    bean validation 技术规范
    JForum 源码分析
    lemon OA 我长时间经历的第一个开源项目
    Rete算法
    摘自知乎--mysql
    copy and paste ,做到这样也很牛逼了
    servlet 3.0特性说明
  • 原文地址:https://www.cnblogs.com/treasury/p/12872321.html
Copyright © 2011-2022 走看看