一、为什么要使用七牛云的OSS(对象存储服务)?

讯享网
二、七牛云使用:
- 登录七牛云官网,注册并认证 (初次认证有30天免费使用权限)
- 新建存储空间



点击创建的空间名字,进入 空间概括如下:


- 阅读帮助文档,在自己的web应用中 使用七牛云对象存储服务OSS
(头像 存至 七牛云对象存储服务中)



3.1、主要看 java SDK (SDK就是一系列的jar包,用的时候直接调用jar包中的api即可)


3.2、SDK(一系列jar包) 引入方式 选择maven方式, 将SDK——jar包 依赖引入 自己的web项目中即可

3.3、上传文件方式: 服务器直传



3.4、复制 数据流上传代码
3.5、用一个测试类 测试上传功能
将拷贝的代码复制到 测试类中,导入相应的包(用人家的代码,导入人家七牛云的包)



3.6、上传本机一张名为111.jpg的图片到七牛云上
AK,SK,bucket要保密,不能直接在 OSSTest类中写。为了安全要从配置文件汇总读取到他们的值
3.7、OSSTest(主要修改6个地方 + 读取application.xml配置文件)
package com.sangeng; import com.google.gson.Gson; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import com.qiniu.storage.Configuration; import com.qiniu.storage.Region; import com.qiniu.storage.UploadManager; import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.util.Auth; import lombok.Data; import org.junit.jupiter.api.Test; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.UnsupportedEncodingException; @Component //注解将该类标记为Spring的组件 //测试类所在包名 test 和 启动类所在包名java 一致(都在同一包src下),不需要加配置。如果不一致要加配置(加属性) //@SpringBootTest(classes = SanGengBlogApplication.class)//指定启动类的字节码 @SpringBootTest //@ConfigurationProperties 的作用: 让JavaBean中属性值要和配置文件application.xml进行映射 @ConfigurationProperties(prefix = "oss") //从application.xml 配置文件中读取 内容 public class OSSTest {
// 读取的时候,要创建成员变量(变量名要和application.xml文件中的名字一致) // 并且 成员变量必须创建setter方法,进行自动赋值 (自动读取配置文件赋值) private String accessKey; private String secretKey; private String bucket; public void setAccessKey(String accessKey) {
this.accessKey = accessKey; } public void setSecretKey(String secretKey) {
this.secretKey = secretKey; } public void setBucket(String bucket) {
this.bucket = bucket; } @Test public void testOss(){
// 注:用七牛云的oss,所以导包的时候 要导入七牛云的包。 用人家的代码,导人家的包 com.qiniu.storage //构造一个带指定 Region 对象的配置类 //修改1.Region指定数据存储区域,autoRegion()自动根据七牛云账号找到选的区域(我选的是 华北) Configuration cfg = new Configuration(Region.autoRegion()); cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本 //...其他参数参考类注释 UploadManager uploadManager = new UploadManager(cfg); //...生成上传凭证,然后准备上传 注:为了安全起见,AK,SK,bucket存储空间名,都是从application.xml 配置文件中读取到的 修改2.复制七牛云官网-个人中心-密钥管理- AK和SK // String accessKey = ""; // String secretKey = ""; 修改3.创建存储空间的名字 pk-sg-blog // String bucket = ""; //默认不指定key的情况下,以文件内容的hash值作为文件名, 比如上传一张图片,名字问hash值生成的名字 //修改4.指定上传文件到oss时,文件的存储名 String key = null; try {
//修改5 注释掉,默认上传 字符串,写我们自己的上传格式(上传图片) // byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8"); // ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes); //上传文件——图片格式(本机绝对路径) InputStream inputStream = new FileInputStream("C:\\Users\\yangguang\\Desktop\\111.jpg"); Auth auth = Auth.create(accessKey, secretKey);//创建凭证 String upToken = auth.uploadToken(bucket); //上传凭证 try {
//修改6 put方法 第一个参数 要放上面 自己定义的 inputStream对象 Response response = uploadManager.put(inputStream,key,upToken,null, null); //解析上传成功的结果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); System.out.println(putRet.key); //Fo2AVLRHugoNbek6XZ8Uy-DCnuSL System.out.println(putRet.hash); //Fo2AVLRHugoNbek6XZ8Uy-DCnuSL hash值就是上传后的图片名字 } catch (QiniuException ex) {
Response r = ex.response; System.err.println(r.toString()); try {
System.err.println(r.bodyString()); } catch (QiniuException ex2) {
//ignore } } } catch (Exception ex) {
//ignore 异常类型 改大一点 } } }
讯享网
application.xml
讯享网oss: accessKey: 7R0PVHVZqQ_9ZUc65kwtYzjZhB5DhtMczhS6822g secretKey: mTF-oazwPEHvO5FnQXFoWPRXKWjSmvC_55Ysycxb bucket: pk-sg-blog
3.8、运行测试类,图片上传成功


因为代码没有设置key值

下面设置key值

3.9、想创建一个2022目录,目录下放111.png









3.3、上传文件方式: 服务器直传


3.5、用一个测试类 测试上传功能
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42888.html