字幕酱开发过程中使用腾讯云存储的接入实例分享

推荐一下一个实用的在线字幕自动生成网站,欢迎访问:字幕酱

 

字幕酱(https://www.zimujiang.com)这个网站是业余时间开发的一个网站,涉及到多媒体问题上传,个人服务器肯定难以为继,所以选择了腾讯云存储。

在对接过程中,使用了腾讯云对象存储服务 Java SDK,下载地址:github项目

注意有个坑的地方就是必须是JDK1.7!!!

 

pom.xml 添加依赖

<dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>3.3</version>
</dependency>

然后相关API文档也是很完备的,如下:

 

文件操作

上传文件

方法原型

String uploadFile(UploadFileRequest request);

参数说明

参数名类型默认值参数描述
requestUploadFileRequest上传文件类型请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,文件路径不能以/结尾, 例如 /mytest/demo.txt
localPathString构造函数或set方法要上传的本地文件的绝对路径
bizAttrString构造函数或set方法文件的备注,主要用于对该文件用途的描述
insertOnlyInsertOnly (枚举)NO_OVER_WRITE (不覆盖)set方法是否直插入不覆盖已存在的文件, NO_OVER_WRITE表示只直插入不覆盖, 当文件存在返回错误 OVER_WRITE 表示允许覆盖

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess, 'data':\$data}, code为0表示成功, message为SUCCESS或者失败原因, data中包含相关的属性, 详情请参见返回值模块

示例

UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName,         "/sample_file.txt", "local_file_1.txt");
String uploadFileRet = cosClient.uploadFile(uploadFileRequest);

获取文件属性

方法原型

String statFile(StatFileRequest request);

参数说明

参数名参数类型默认值参数描述
requestStatFileRequest获取文件属性请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,文件路径不能以/结尾, 例如 /mytest/demo.txt

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess, 'data':\$data}, code为0表示成功, message为SUCCESS或者失败原因, data中包含相关的属性, 详情请参见返回值模块

示例

StatFileRequest statFileRequest = new StatFileRequest(bucketName, "/sample_file.txt");
String statFileRet = cosClient.statFile(statFileRequest);

更新文件属性

方法原型

String updateFile(UpdateFileRequest request);

参数说明

参数名参数类型默认值参数描述
requestUpdateFileRequest更新文件属性请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,文件路径不能以/结尾, 例如 /mytest/demo.txt
bizAttrStringset方法文件的备注,主要用于对改文件用途的描述
authorityString (枚举)set方法文件权限,默认是继承bucket的权限合法取值: eInvalid(继承bucket), eWRPrivate(私有读写), eWPrivateRPublic(私有写, 公有读)
cacheControlStringset方法参见HTTP的Cache-Control
contentTypeStringset方法参见HTTP的Content-Type
contentLanguageStringset方法参见HTTP的Content-Language
contentDispositionStringset方法参见HTTP的Content-Disposition
x-cos-meta-Stringset方法自定义HTTP 头,参数必须以x-cos-meta-开头,值由用户定义,可设置多个

tips: 更新属性可以选择其中的某几个,对于HTTP头部cache_control,content_type, content_disposition和x-cos-meta-, 如果本次只更新其中的某几个,其他的都会被抹掉,即这4个属性是整体更新。

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess}, code为0表示成功, message为SUCCESS或者失败原因, 详情请参见返回值模块

示例

UpdateFileRequest updateFileRequest = new UpdateFileRequest(bucketName, "/sample_file.txt");

updateFileRequest.setBizAttr("测试目录");
updateFileRequest.setAuthority(FileAuthority.WPRIVATE);
updateFileRequest.setCacheControl("no cache");
updateFileRequest.setContentDisposition("cos_sample.txt");
updateFileRequest.setContentLanguage("english");
updateFileRequest.setContentType("application/json");
updateFileRequest.setXCosMeta("x-cos-meta-xxx", "xxx");
updateFileRequest.setXCosMeta("x-cos-meta-yyy", "yyy");

String updateFileRet = cosClient.updateFile(updateFileRequest);

移动文件(重命名文件)

方法原型

String moveFile(MoveFileRequest request);

参数说明

参数名参数类型默认值参数描述
requestMoveFileRequest移动文件请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,文件路径不能以/结尾, 例如 /mytest/demo.txt
overWriteOverWriteOverWrite.NO_OVER_WRITE构造函数或set方法是否覆盖, 0(默认): 不覆盖, 1: 覆盖

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess}, code为0表示成功, message为SUCCESS或者失败原因, 详情请参见返回值模块

示例

MoveFileRequest moveFileRequest = new MoveFileRequest(bucketName, "/sample_file.txt", "/sample_file_move.txt");
String moveFileRet = cosClient.moveFile(moveFileRequest);

删除文件

方法原型

String delFile(DelFileRequest request);

参数说明

参数名参数类型默认值参数描述
requestDelFileRequest删除文件请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,文件路径不能以/结尾, 例如 /mytest/demo.txt

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess}, code为0表示成功, message为SUCCESS或者失败原因, 详情请参见返回值模块

示例

DelFileRequest delFileRequest = new DelFileRequest(bucketName, "/sample_file_move.txt");
String delFileRet = cosClient.delFile(delFileRequest);

目录操作

创建目录

方法原型

String createFolder(CreateFolderRequest request);

参数说明

参数名参数类型默认值参数描述
requestCreateFolderRequest创建目录请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,目录路径必须以/结尾, 例如 /mytest/dir/
bizAttrStringset方法目录的备注,主要用于对目录用途的描述

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess}, code为0表示成功, message为SUCCESS或者失败原因, 详情请参见返回值模块

示例

CreateFolderRequest createFolderRequest = new CreateFolderRequest(bucketName, "/sample_folder/");
String createFolderRet = cosClient.createFolder(createFolderRequest);

获取目录属性

方法原型

String statFolder(StatFolderRequest request);

参数说明

参数名参数类型默认值参数描述
requestStatFolderRequest获取目录属性请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,目录路径必须以/结尾, 例如 /mytest/dir/

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess, 'data':\$data}, code为0表示成功, message为SUCCESS或者失败原因, data中包含相关的属性, 详情请参见返回值模块

示例

StatFolderRequest statFolderRequest = new StatFolderRequest(bucketName, "/sample_folder/");
String statFolderRet = cosClient.statFolder(statFolderRequest);

更新目录属性

方法原型

String updateFolder(UpdateFolderRequest request);

参数说明

参数名参数类型默认值参数描述
requestUpdateFolderRequest更新目录属性请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,目录路径必须以/结尾, 例如 /mytest/dir/
bizAttrStringset方法目录的备注,主要用于对目录用途的描述

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess}, code为0表示成功, message为SUCCESS或者失败原因, 详情请参见返回值模块

示例

UpdateFolderRequest updateFolderRequest = new UpdateFolderRequest(bucketName, "/sample_folder/");
updateFolderRequest.setBizAttr("这是一个测试目录");
String updateFolderRet = cosClient.updateFolder(updateFolderRequest);

获取目录列表

方法原型

String listFolder(ListFolderRequest request);

参数说明

参数名参数类型默认值参数描述
requestListFolderRequest获取目录成员请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,目录路径必须以/结尾, 例如 /mytest/dir/
numint199构造函数或set方法获取列表成员的数量,最大为199
patternListPattern (枚举)BOTH构造函数或set方法获取列表成员类型, 合法取值 BOTH(获取文件和目录), DIR_ONLY(只获取目录), FILE_ONLY(只获取文件)
prefixString构造函数或set方法搜索成员的前缀, 例如prefix为test表示只搜索以test开头的文件或目录
contextString构造函数或set方法搜索上下文, 由上一次list的结果返回,作为这一次搜索的起点,用于循环获取一个目录下的所有成员
orderListOrder (枚举)POSITIVE (正序)构造函数或set方法搜索顺序, POSITIVE: 正序, NEGATIVE: 逆序

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess, 'data':\$data}, code为0表示成功, message为SUCCESS或者失败原因, data中包含成员列表, 详情请参见返回值模块

示例

ListFolderRequest listFolderRequest = new ListFolderRequest(bucketName, "/sample_folder/");
String listFolderRet = cosClient.listFolder(listFolderRequest);

删除目录

方法原型

String delFolder(DelFolderRequest request);

参数说明

参数名参数类型默认值参数描述
requestDelFolderRequest删除目录请求
request成员类型默认值设置方法描述
bucketNameString构造函数或set方法bucket名称
cosPathString构造函数或set方法cos路径, 必须从bucket下的根/开始,目录路径必须以/结尾, 例如 /mytest/dir/

返回结果说明

返回值类型返回值描述
String{'code':\$code, 'message':$mess}, code为0表示成功, message为SUCCESS或者失败原因, 详情请参见返回值模块

示例

DelFolderRequest delFolderRequest = new DelFolderRequest(bucketName, "/sample_folder/");
String delFolderRet = cosClient.delFolder(delFolderRequest);

签名管理

签名模块提供了生成多次签名、单次签名和下载签名的接口,其中多次签名和单次签名在文件和目录操作的api内部使用,用户不用关心,下载签名用于方便用户生成下载私有bucket的文件签名。

多次签名

方法原型

String getPeriodEffectiveSign(String bucketName, String cosPath, Credentials cred, long expired)

使用场景

上传文件, 重命名文件, 创建目录, 获取文件目录属性, 拉取目录列表

参数说明

参数名参数类型默认值参数描述
bucketStringbucket名称
cos_pathString要签名的cos路径
credCredentials用户身份信息, 包括appid, secretId, secretkey
expiredlong签名过期时间, UNIX时间戳

返回结果说明

base64编码的字符串

示例

Credentials cred = new Credentials(appId, secretId, secretKey);
long expired = System.currentTimeMillis() / 1000 + 600;
String signStr = Sign.getPeriodEffectiveSign(bucketName, "/pic/test.jpg", cred, expired);

单次签名

方法原型

String getOneEffectiveSign(String bucketName, String cosPath, Credentials cred)

使用场景

删除和更新文件目录

参数说明

参数名参数类型默认值参数描述
bucketunicodebucket名称
cos_pathunicode要签名的cos路径
credCredentials用户身份信息, 包括appid, secretId, secretkey

返回结果说明

base64编码的字符串

示例

Credentials cred = new Credentials(appId, secretId, secretKey);
String signStr = Sign.getOneEffectiveSign(bucketName, "/pic/test.jpg", cred);

下载签名

方法原型

String getDownLoadSign(String bucketName, String cosPath, Credentials cred, long expired)

使用场景

生成文件的下载签名, 用于下载私有bucket的文件

参数说明

参数名参数类型默认值参数描述
bucketunicodebucket名称
cos_pathunicode要签名的cos路径
credCredentials用户身份信息, 包括appid, secretId, secretkey
expiredlong签名过期时间, UNIX时间戳

返回结果说明

base64编码的字符串

示例

Credentials cred = new Credentials(appId, secretId, secretKey);
long expired = System.currentTimeMillis() / 1000 + 600;
String signStr = Sign.getDownLoadSign(bucketName, "/pic/test.jpg", cred, expired);

操作返回值说明

code含义
0操作成功
-1输入参数错误, 例如输入的本地文件路径不存在, cos文件路径不符合规范
-2网络错误, 如404等
-3连接cos时发生异常,如连接超时
-71操作频率过快,触发cos的频控
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值