Spring boot实现图片上传和下载

在pom.xml中添加依赖:

html 复制代码
<dependency>
   <groupId>commons-codec</groupId>
   <artifactId>commons-codec</artifactId>
</dependency>

在controller中实现上传和下载

上传图片:

图片的base64格式为字符串,以"data:image/png;base64,"开头,解码前需要去掉开头。

java 复制代码
import org.apache.commons.codec.binary.Base64;
   

 @PostMapping(value = "/uploadImage",produces = MediaType.IMAGE_JPEG_VALUE)
    @ResponseBody
    public String uploadImage(@RequestBody Map<String,Object> map) throws IOException {
    	try {
    		Map<String,Object> m = (Map<String,Object>)map.get("img");
    		String imgStr = m.get("base64").toString();
    		imgStr = imgStr.substring(imgStr.indexOf(",", 1) + 1);

            byte[] bytes = Base64.decodeBase64(imgStr);

            String name = System.currentTimeMillis()+".png";       
            File file = new File("pictures/"+name);
            file.createNewFile();
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(bytes);
            fos.close();
            
        } catch (Exception e) {
            e.printStackTrace();
            return "False";
        }

        return "True";
    }

下载图片:将图片转成字节数组。

java 复制代码
    @RequestMapping(value = "/getImage",produces = MediaType.IMAGE_JPEG_VALUE)
    @ResponseBody
    public byte[] getImage(String path) throws IOException {
        File file = new File("pictures/"+path);
        FileInputStream inputStream = new FileInputStream(file);
        byte[] bytes = new byte[inputStream.available()];
        inputStream.read(bytes, 0, inputStream.available());
        inputStream.close();
        return bytes;
    }
相关推荐
开开心心_Every2 分钟前
强制打字练习工具:打够百字才可退出
java·游戏·微信·eclipse·pdf·excel·语音识别
xiaolyuh1233 分钟前
Redis 核心业务流程
java·redis·spring
BD_Marathon5 分钟前
MyBatis——封装SqlSessionUtils工具类并测试功能
java·windows·mybatis
浩瀚地学9 分钟前
【Java】集合-Collection
java·开发语言·经验分享·笔记·学习
wangkay8818 分钟前
【Java 转运营】Day03:抖音直播间自然流运营
java·开发语言·新媒体运营
计算机程序设计小李同学18 分钟前
平价药店销售与管理系统
java·mysql·spring·spring cloud·ssm
黎雁·泠崖18 分钟前
吃透Java操作符高阶:位操作符+赋值操作符 全解析(Java&C区别+实战技巧+面试考点)
java·c语言·面试
TEC_INO27 分钟前
STM32_11:DMA
java·前端·stm32
郑州光合科技余经理29 分钟前
私有化B2B订货系统实战:核心模块设计与代码实现
java·大数据·开发语言·后端·架构·前端框架·php
五阿哥永琪30 分钟前
基于 Spring AOP 的角色权限校验实现指南&&注解类型避坑指南
java·后端·spring