springmvc上传图片

本文详细介绍如何使用SpringMVC框架实现图片上传功能,包括图片尺寸及大小限制、异常处理及JSON响应。通过具体代码示例,展示了如何读取、验证图片尺寸与大小,以及如何将图片保存到指定路径,并返回上传状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springmvc上传图片

/**
 * 图片尺寸为 1:1,大小<1M
 * @param response
 * @param out
 * @param file
 */
@RequestMapping("/savePic")
@ResponseBody
public void savePic(HttpServletResponse response,PrintWriter out,MultipartFile file){
        {
            HashMap<String, Object> map = new HashMap<>();
        BufferedImage src = null;
        try {
            src = ImageIO.read(file.getInputStream());
            int fh = src.getHeight();
            int fw = src.getWidth();
            //判断图片大小是否小于或等于1M
            long fileSize = file.getSize();
            if(fileSize<=(1024*1024)&&fh==fw){
                map = FileUploadUtil.saveImage(file, response);
                map.put("code", 1);
            }else if(fileSize>(1024*1024)){
                //图片大小不符合
                map.put("code", 2);
                map.put("msg", "图片最大只能为1M");
            }else if(fh!=fw){
                map.put("code", 2);
                map.put("msg", "图片尺寸必须为1:1");
            } else{
                map.put("code", 3);
                map.put("msg", "图片上传异常");
            }
            out.println(JsonUtil.jsonObject(map, new String[]{}, null));
        } catch (Exception e) {
            logger.error(e);
            map.put("code", 4);
            map.put("msg", "数据异常");
            // TODO: handle exception
            out.println(JsonUtil.jsonObject(map, new String[]{}, null));
        }
    }

    public static HashMap<String, Object> saveImage(MultipartFile file,HttpServletResponse response){
        String picname = System.currentTimeMillis()+"";
        HashMap<String, Object> map = new HashMap<>();
        String fullpicname = "";
        //保存图片路径,自己定义图片存储的物理位置
        String savepath = ParametersUtil.readFile();
        //构建文件目录
        File fileDir = new File(savepath);
        if(!fileDir.exists()){
            fileDir.mkdirs();
        }
        try {
            String ofn = file.getOriginalFilename();
            //获取图片的扩展名
            String extensionName = ofn.substring(ofn.lastIndexOf(".")+1);
            fullpicname = picname+"."+extensionName;
            FileOutputStream fileout = new FileOutputStream(savepath+"/"+fullpicname);
            //写入文件
            fileout.write(file.getBytes());
            //这里返回的是图片的访问路径
            map.put("url",ContentUtil.TESTPICURL+"/"+fullpicname);
            fileout.flush();
            fileout.close();
            return map;
        } catch (Exception e) {
            // TODO: handle exception
        }
        return null;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值