Java整合七牛云进行文件的上传与下载

一、七牛云的对象存储的介绍

七牛云对象存储 Kodo 是七牛云提供的高可靠、强安全、低成本、可扩展的存储服务。您可通过控制台、API、SDK 等方式简单快速地接入七牛存储服务,实现海量数据的存储和管理。通过 Kodo 可以进行文件的上传、下载和管理。


此外,Kodo 的姊妹产品融合 CDN可以对文件下载进行加速,智能多媒体 API更是提供了丰富的基于海量数据深度学习算法的计算机视觉服务,如人脸技术、场景物体识别、OCR 文字识别和内容审核等。


二、七牛云对象存储(Kodo)主要应用场景

  1. 在线存储和分发

七牛云对象存储提供高可用和高可靠的对象存储服务,您可以放心的将各种内容存储在云端。利用七牛云对象存储的扩展性和按需付费的优势,可以满足您持续快速增长的存储需求。您也可以搭配使用七牛云的对象存储和融合 CDN服务,实现全球覆盖、快速高效的内容分发。

  1. 镜像存储

七牛云对象存储支持镜像存储,这是一种快速的数据迁移和加速服务。可以帮助您实现无缝数据迁移,迁移过程中并不影响原有业务系统的访问。镜像存储适用于迁移原有业务系统的已有数据。

  1. 备份和归档

七牛云对象存储提供高可用和高可靠的存储解决方案来备份和归档您的关键数据。通过七牛云的身份验证机制可以设置不同的访问权限和级别,保障您数据的访问安全。相比传统自建的备份和归档存储系统,您无需在业务初期采购高昂硬件,无需担心数据增长带来的扩容问题,从而节省更多的存储成本、维护成本和人力资源成本。

  1. 富媒体数据处理

针对海量的用户生成内容,七牛云对象存储能够提供跨地域、高并发的内容上传和访问服务。同时结合七牛云提供的数据处理服务,可以在云端实现图片裁剪、格式转化和水印,以及视频转码、切片和拼接等富媒体处理功能,满足移动网络场景下多终端设备的访问需求。

  1. 静态资源托管

七牛云对象存储无缝集合各类第三方扩展插件,如 WordPress、Discuz、Emlog 等,并支持一键将各类插件里的静态资源托管到七牛云对象存储。

三、使用Java进行开发

  1. 整合七牛云SDK
    在Maven中添加七牛云SDK依赖包:

    <dependencies>
    	<dependency>
      		<groupId>com.qiniu</groupId>
      		<artifactId>qiniu-java-sdk</artifactId>
      		<version>7.2.11</version>
      		<scope>compile</scope>
    	</dependency>
    	<dependency>
      		<groupId>com.squareup.okhttp3</groupId>
      		<artifactId>okhttp</artifactId>
      		<version>3.3.1</version>
      		<scope>compile</scope>
    	</dependency>
    	<dependency>
      		<groupId>com.google.code.gson</groupId>
      		<artifactId>gson</artifactId>
      		<version>2.6.2</version>
      		<scope>compile</scope>
    	</dependency>
    	<dependency>
      		<groupId>com.qiniu</groupId>
      		<artifactId>happy-dns-java</artifactId>
      		<version>0.1.4</version>
      		<scope>compile</scope>
    	</dependency>
    	<dependency>
      		<groupId>junit</groupId>
      		<artifactId>junit</artifactId>
      		<version>4.12</version>
      		<scope>test</scope>
    	</dependency>
    </dependencies>
    

    最新官方SDK开发文档地址:https://developer.qiniu.com/kodo/sdk/1239/java#3


  2. 上传文件原理
    根据官方的开发手册可以知道,七牛云服务器接受从客户端直接上传文件,之后再通过回调地址发送回调,对于返回的数据也给了我们很大的自由,我们完全可以自定义需要返回的数据。

    也可以从本地直接上传文件,原理与从客户端上传相似,这里不再赘述。

    七牛云上传文件开发手册链接:https://developer.qiniu.com/kodo/manual/1272/form-upload
    七牛云的仓库有两种,公开仓库和私有仓库,这两种仓库上传的原理相似。

    七牛云的对象存储类似于java中的Map,使用的是键-值的存储方式,键是唯一的,我们可以通过键来改变它所对应的值,所以我们在上传的时候一定要注意保证键的唯一。

    那么七牛云是怎么知道是谁在上传,他应该把上传的文件放在哪里呢?很简单,通过密钥

    我们需要先设置七牛云的密钥,在使用的时候通过密钥生成一个通行证,也就是七牛云的上传凭证,这个上传凭证中包含了你上传文件所需要的所有信息,七牛云可以通过这个通行证得到他所需要的信息。

    首先,我们来设置密钥:

    • 打开七牛云
    • 登录七牛云账号,进入个人中心
      个人中心
    • 直接生成密钥就可以了

    有了密钥以后,我们就可以通过密钥来生成上传凭证了。

    这里我封装了七牛云上传工具类,直接看工具类吧

    package com.kude.controller;
    
    import com.qiniu.util.Auth;
    import com.qiniu.util.StringMap;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Properties;
    
    public class Qiniu {
    
    	// accessKey
    	private static String accessKey = "access key";
    
    	// secretKey
    	private static String secretKey = "secret
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Spring Boot整合七牛云上传文件,可以按照以下步骤进行: 1.引入七牛云Java SDK 在pom.xml中引入七牛云Java SDK: ```xml <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.2.0,)</version> </dependency> ``` 2.配置七牛云参数 在application.yml或application.properties中添加七牛云的参数: ```yml qiniu: accessKey: your_access_key secretKey: your_secret_key bucket: your_bucket_name domain: your_domain_name ``` 3.编写上传文件的代码 在需要上传文件的地方编写上传文件的代码,示例代码如下: ```java @Service public class QiniuService { @Autowired private QiniuConfig qiniuConfig; /** * 上传文件七牛云 * * @param file 文件对象 * @return 文件访问URL */ public String uploadFile(File file) throws QiniuException { // 构造一个带指定Zone对象的配置类 Configuration cfg = new Configuration(Zone.autoZone()); // ...其他参数参考类注释 UploadManager uploadManager = new UploadManager(cfg); // 生成上传凭证,然后准备上传 String accessKey = qiniuConfig.getAccessKey(); String secretKey = qiniuConfig.getSecretKey(); String bucket = qiniuConfig.getBucket(); // 如果是Windows情况下,格式是 D:\\qiniu\\test.png String localFilePath = file.getAbsolutePath(); // 默认不指定key的情况下,以文件内容的hash值作为文件名 String key = null; Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); try { Response response = uploadManager.put(localFilePath, key, upToken); // 解析上传成功的结果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); return qiniuConfig.getDomain() + "/" + putRet.key; } catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); try { System.err.println(r.bodyString()); } catch (QiniuException ex2) { // ignore } throw ex; } } } ``` 4.测试上传文件 在测试类中编写测试上传文件的代码,示例代码如下: ```java @RunWith(SpringRunner.class) @SpringBootTest public class QiniuServiceTest { @Autowired private QiniuService qiniuService; @Test public void testUploadFile() throws QiniuException { File file = new File("test.png"); String url = qiniuService.uploadFile(file); System.out.println(url); } } ``` 其中,test.png是要上传文件名。运行测试类即可上传文件七牛云,并返回文件的访问URL。 以上就是Spring Boot整合七牛云上传文件的全部步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值