图解Springboot集成七牛云并实现图片上传功能过程

 更新时间:2021年11月24日 15:00:58   作者:爪洼ing  
在实际开发中 ,基本都会有应用到文件上传的场景,但随着或多或少的需求问题,之前有在springboot上用过七牛云实现图片上传,今天因为某些原因又重新使用了下七牛云因此想总结下七牛云

七牛云的使用

1、进入官网,注册一个账号

在这里插入图片描述

2、找到对象存储

在这里插入图片描述

3、新建存储空间

在这里插入图片描述

4、管理存储空间

在这里插入图片描述

5、到此基本操作就完成了,接下来我们要在项目中使用

方式一:官方的帮助文档,很详细:

步骤一:找到开发者中心

在这里插入图片描述

步骤二:选择对象存储

在这里插入图片描述

步骤三:找到Java的SDK

可以看到我们的官网非常详细!

在这里插入图片描述

方式二:这里给大家封装好了一个工具类,maven项目可以直接用

官网是静态工具类,这里是注入到IOC容器当中!

1、导入pom依赖

        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.7.0, 7.7.99]</version>
        </dependency>

2、工具类QiniuUtils

@Component
public class QiniuUtils {

    public static  final String url = "http://测试域名/";  //七牛云图片服务器域名(有效1个月)

    @Value("${qiniu.accessKey}")
    private  String accessKey;      //类似账号,在七牛云个人空间---密钥管理获取
    @Value("${qiniu.accessSecretKey}")
    private  String accessSecretKey;   //类似密码

    public boolean upload(MultipartFile file, String fileName){

        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.huabei());  //根据自己的对象空间的地址选(华为)
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传 (个人存储空间名字)
        String bucket = "个人存储空间名字";
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        try {
            byte[] uploadBytes = file.getBytes();
            Auth auth = Auth.create(accessKey, accessSecretKey);
            String upToken = auth.uploadToken(bucket);
                Response response = uploadManager.put(uploadBytes, fileName, upToken);
                //解析上传成功的结果
                DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
                return true;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        return false;
    }
}

3、我们的两个密钥是配置在properties中,如下

在这里插入图片描述

4、还是在springboot的配置文件中

pringboot默认只上传1M的图片大小所以修改文件配置

# 上传文件总的最大值
spring.servlet.multipart.max-request-size=20MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=2MB

5、使用QiniuUtils工具类

@RestController
@RequestMapping("/upload")
public class UploadController {

    @Autowired
    QiniuUtils qiniuUtils ;

    @PostMapping
    public Result upload(@RequestParam("image") MultipartFile file){
        //原始文件名称比如 aa.png
        String originalFilename = file.getOriginalFilename() ;
        //将原始名称修改为:唯一文件名称
        String fileName = UUID.randomUUID().toString() + "." + StringUtils.substringAfterLast(originalFilename, ".");
        //上传文件,上传到哪呢?图片服务器七牛云
        //把图片发放到距离图片最近的服务器上,降低我们自身服务器的带宽消耗
        boolean upload = qiniuUtils.upload(file, fileName);
        if (upload){
            //上传成功
            return Result.success(QiniuUtils.url+fileName) ;
        }

        return Result.fail(20001,"图片 上传失败!") ;
    }
}

我们调用该接口给他一个文件就完成使用了,无论是网络还是本地,都会保存在七牛云服务器当中!

在这里插入图片描述

效果:上传本地或网络图片,会生成一个唯一图片在七牛云服务器中的地址!

在这里插入图片描述

结束

到此这篇关于图解Springboot集成七牛云并实现图片上传功能过程的文章就介绍到这了,更多相关Springboot 集成七牛云内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springBoot整合RocketMQ及坑的示例代码

    springBoot整合RocketMQ及坑的示例代码

    这篇文章主要介绍了springBoot整合RocketMQ及坑的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • java web服务器实现跨域访问

    java web服务器实现跨域访问

    这篇文章主要为大家详细介绍了java web服务器实现跨域访问,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java中的多态、抽象类和接口详解

    Java中的多态、抽象类和接口详解

    这篇文章详细讲解了Java的多态、抽象类和接口,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 解决fastjson泛型转换报错的解决方法

    解决fastjson泛型转换报错的解决方法

    这篇文章主要介绍了解决fastjson泛型转换报错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • HttpClient实现表单提交上传文件

    HttpClient实现表单提交上传文件

    这篇文章主要为大家详细介绍了HttpClient实现表单提交上传文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • JAVA中数组从小到大排序的2种方法实例

    JAVA中数组从小到大排序的2种方法实例

    JAVA中在运用数组进行排序功能时一般有多种解决方案,下面这篇文章主要给大家介绍了关于JAVA中数组从小到大排序的2种方法,文中都给出了详细的实例代码,需要的朋友可以参考下
    2023-03-03
  • Java在利用反射条件下替换英文字母中的值

    Java在利用反射条件下替换英文字母中的值

    今天小编就为大家分享一篇关于Java在利用反射条件下替换英文字母中的值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java中的for循环结构及实例

    Java中的for循环结构及实例

    这篇文章主要介绍了Java中的for循环结构及实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • java正则表达式处理花括号内容替换赋值问题

    java正则表达式处理花括号内容替换赋值问题

    这篇文章主要介绍了java正则表达式处理花括号内容替换赋值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • java设计模式之装饰器模式(Decorator)

    java设计模式之装饰器模式(Decorator)

    这篇文章主要为大家详细介绍了java设计模式之装饰器模式Decorator,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论