Java SDK

<p><strong>1.&nbsp;简介</strong></p> <ul> <li>OBS Java SDK 适用于 JDK6 及以上版本;</li> <li>本文档主要介绍 OBS Java SDK 的接口使用及注意事项;</li> <li>并且假设您是平安云用户,且已经开通了OBS服务;</li> <li>如果您还没有开通或者还不了解平安云 OBS 服务,请登录&nbsp;OBS产品主页&nbsp;进行了解。</li> </ul> <p>&nbsp;</p> <p><strong>2. SDK下载</strong></p> <p>Java SDK 开发包最新版本 <a href="https://obs-cn-shanghai.yun.pingan.com/pcp-portal/sdk%2Fobs-java-sdk-3.8.1.jar?response-content-disposition=attachment%3Bfilename%3Dobs-java-sdk-3.8.1.jar">v3.8.1</a></p> <p>&nbsp;</p> <p><strong>3.&nbsp;API概览</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>API</strong></p> </td> <td> <p><strong>描述</strong></p> </td> </tr> <tr> <td> <p>getFromConfigFile</p> </td> <td> <p>初始化服务</p> </td> </tr> <tr> <td> <p>getFromConfigObject</p> </td> <td> <p>初始化服务</p> </td> </tr> <tr> <td> <p>putObject</p> </td> <td> <p>以 File 对象上传对象存储,若对象存在则更新。</p> </td> </tr> <tr> <td> <p>batchPutObject</p> </td> <td> <p>同时上传多个 File 对象到 OBS。</p> </td> </tr> <tr> <td> <p>putObjectMultipart</p> </td> <td> <p>对于大文件上传,可以切分成片上传。在以下情况下,应该考虑使用分片上传:</p> <ul> <li>文件大于 100M</li> <li>网络环境差,上传易导致失败</li> <li>需要支持断点续传</li> </ul> </td> </tr> <tr> <td> <p>abortMultipartUpload</p> </td> <td> <p>分片上传的接口中,当参数 MutilpartUploadFileRequest 的 enableCheckpoint 被设置成 true 时(默认为true),断点续传功能被开启。断点续传允许重试失败的分片,而不需重传已经成功的分片。分片上传会在客户端的文件系统中创建一个分片记录(.ucp)文件。开启断点续传功能后,上传会读取该文件中的记录,而只传还未完成的分片;若此记录文件不存在,则会创建该记录文件,并从头开始上传文件。 由于分片上传的每个片会驻留在 OBS 中,直到所有分片上传完成且执行 complete 操作。未执行 complete 操作的上传,其相关的分片将占用存储资源。用户需要调用取消分片上传的接口来删除这些分片。</p> </td> </tr> <tr> <td> <p>putAndCompressObject</p> </td> <td> <p>将File对象进行压缩上传到对象存储,若对象存在则更新。</p> </td> </tr> <tr> <td> <p>getObject</p> </td> <td> <p>下载指定对象,此方法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。若仅为了获得对象的描述信息而非内容,请使用headObject接口。</p> </td> </tr> <tr> <td> <p>getSignedUrl</p> </td> <td> <p>获取对象的已签名的下载 URL。</p> </td> </tr> <tr> <td> <p>getImageViewUrl</p> </td> <td> <p>获取图片处理下载链接。</p> </td> </tr> <tr> <td> <p>batchGetObject</p> </td> <td> <p>根据多个文件的 objectKey 同时下载多个文件。</p> </td> </tr> <tr> <td> <p>getAndUncompressObject</p> </td> <td> <p>解压指定objectKey对象,然后进行下载。</p> </td> </tr> <tr> <td> <p>listObjects</p> </td> <td> <p>查询bucket下的对象列表。</p> </td> </tr> <tr> <td> <p>headObject</p> </td> <td> <p>获得对象描述信息以及自定义元数据。</p> </td> </tr> <tr> <td> <p>deleteObject</p> </td> <td> <p>删除指定对象。</p> </td> </tr> <tr> <td> <p>encryptFile</p> </td> <td> <p>客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。</p> </td> </tr> <tr> <td> <p>encryptInputStream</p> </td> <td> <p>客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。</p> </td> </tr> <tr> <td> <p>decryptFile</p> </td> <td> <p>客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。</p> </td> </tr> <tr> <td> <p>decryptInputStream</p> </td> <td> <p>客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。</p> </td> </tr> <tr> <td> <p>getImageView</p> </td> <td> <p>格式转换,获取适配图片,支持格式 jpeg,tiff, gif, bmp, png ,其中 gif 格式只会保留第一帧图片,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。参数 width 和 height 至少需传入一个,不能同时为 0。</p> </td> </tr> <tr> <td> <p>getThumbnail</p> </td> <td> <p>根据自定义规则获取缩略图或视频截图,缩略图支持格式jpeg, tiff, gif, bmp, png,截图支持格式:` jpg和png,此法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。</p> </td> </tr> <tr> <td> <p>getCutImage</p> </td> <td> <p>根据宽度和高度获取剪切图,先截取图片左边和上边,截取到一定大小后(比较小的时候),会截取四边,保留中间部分,当设定值大于图片实际宽、高时,会根据实际大小裁剪,支持 jpeg, tiff, gif, bmp, emf, exif, wmf, icon, png, memoryBmp, webp。此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。</p> </td> </tr> <tr> <td> <p>getImageInfo</p> </td> <td> <p>获取指定图片信息</p> </td> </tr> <tr> <td> <p>transCodingMedia</p> </td> <td> <p>媒体转码,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。</p> </td> </tr> <tr> <td> <p>getVedioFrame</p> </td> <td> <p>获取视频截图,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。</p> </td> </tr> <tr> <td> <p>getMediaInfo</p> </td> <td> <p>获取媒体对象的信息。</p> </td> </tr> <tr> <td> <p>queryMediaByCKs</p> </td> <td> <p>获取 media 转码记录,用于查询转码进度。</p> </td> </tr> <tr> <td> <p>deleteMediaByCK</p> </td> <td> <p>根据转换后新生成的 key 删除 media 转码记录及转码后的 object。</p> </td> </tr> <tr> <td> <p>pfop</p> </td> <td> <p>图片、音视频异步处理并持久化。</p> </td> </tr> <tr> <td> <p>prefop</p> </td> <td> <p>操作pfop操作进度和操作结果。</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>4.&nbsp;API描述</strong></p> <p><strong>(1)初始化服务</strong></p> <p><strong>描述</strong></p> <p>RadosgwService&nbsp;是 OBS 服务的 JAVA 客户端,它为调用者提供一系列与 OBS 进行交互的接口,用于上传下载文件,加密解密文件,处理图片,音视频文件等。用户在调用 SDK 接口前<strong>必须</strong>先初始化&nbsp;RadosgwService&nbsp;服务。</p> <ul> <li>基本<strong>配置文件</strong>创建服务实例:</li> </ul> <p>String configFileName = &lt;your config file name&gt;;</p> <p>RadosgwService service = RadosgwServiceFactory.</p> <p>getFromConfigFile(configFileName);</p> <p>将配置文件信息放在 classpath 下,作为&nbsp;configFileName.properties&nbsp;文件存放。</p> <p>configFileName.properties&nbsp;信息内容示例如下:</p> <p>access_id = theAccessId</p> <p>security_id = theSecurityId</p> <p>rgw_addr = theObsEndPoint</p> <ul> <li>基于 <strong>ObsClientConfig 接口对象</strong>创建服务实例:</li> </ul> <p>ObsClientConfig oc = new ObsClientConfig() {</p> <p>public String getUserAgent() {</p> <p>&nbsp;&nbsp;&nbsp; return &quot;&lt;your system name&gt;&quot;;</p> <p>&nbsp; }</p> <p>&nbsp; public String getObsUrl() {</p> <p>&nbsp;&nbsp;&nbsp; return &quot;&lt;theObsEndPoint&gt;&quot;;</p> <p>&nbsp; }</p> <p>&nbsp; public String getObsAccessKey() {</p> <p>&nbsp;&nbsp;&nbsp; return &quot;&lt;theAccessId&gt;&quot;;</p> <p>&nbsp; }</p> <p>&nbsp; public String getObsSecret() {</p> <p>&nbsp;&nbsp;&nbsp; return &quot;&lt;theSecurityId&gt;&quot;;</p> <p>&nbsp; }</p> <p>};</p> <p>RadosgwService service = RadosgwServiceFactory.getFromConfigObject(oc);</p> <p><strong>theObsEndPoint请从OBS控制台去获取endpoint,建议使用https 的请求,如&quot;https://obs-cn-shenzhen.yun.pingan.com&quot;。</strong></p> <p>&nbsp;</p> <p><strong>(2) putObject(文件上传)</strong></p> <p><strong>接口描述</strong></p> <p>以 File 对象上传对象存储,若对象存在则更新。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p><em>需自行实现策略保证同一 bucket 下 objectKey唯一,</em><em> 首字符不能为路径符。</em></p> </td> </tr> <tr> <td> <p><em>localFile</em></p> </td> <td> <p><em>File</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>待上传的文件对象</em></p> </td> <td> <p><em>不能超过 1GB</em></p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>putObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;对象</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(3) putObject(文件上传)</strong></p> <p><strong>接口描述</strong></p> <p>以 File 对象上传对象存储并附带自定义元数据,若对象存在则更新。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p><em>需自行实现策略保证同一 bucket 下 objectKey唯一,</em><em> 首字符不能为路径符。</em></p> </td> </tr> <tr> <td> <p><em>localFile</em></p> </td> <td> <p><em>File</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>待上传的文件对象</em></p> </td> <td> <p><em>不能超过 1GB</em></p> </td> </tr> <tr> <td> <p><em>metadata</em></p> </td> <td> <p><em>ObjectMetadata</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>自定义元数据</em></p> </td> <td> <p><em>key-value 格式,key 只允许使用小写字母、数字、中横线</em></p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>putObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;对象</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(4) putObject(流式上传)</strong></p> <p><strong>接口描述</strong></p> <p>以 InputStream 形式上传对象存储,若对象存在则更新,建议仅用于上传较小的对象<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p><em>需自行实现策略保证同一 bucket 下 objectKey唯一,</em><em> 首字符不能为路径符。</em></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>待上传的流</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>putObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;对象</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(5) putObject(流式上传)</strong></p> <p><strong>接口描述</strong></p> <p>以 InputStream 形式上传对象存储并附带对象元数据,若对象存在则更新,大、小对象上传均适用<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p><em>需自行实现策略保证同一 bucket 下 objectKey唯一,</em><em> 首字符不能为路径符。</em></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>待上传的流</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>metadata</em></p> </td> <td> <p><em>ObjectMetadata</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>自定义元数据</em></p> </td> <td> <p><em>key-value 格式,key 只允许使用小写字母、数字、中横线。建议指定 ContentLength,若不指定,流会被首先全部读取到内存再做上传;建议指定 contentType,若不指定,会赋予默认类型&nbsp;application/octet-stream。</em></p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>putObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;</em></p> </td> <td> <p><em>PutObjectResult&nbsp;对象</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(6) batchPutObject(批量上传)</strong></p> <p><strong>接口描述</strong></p> <p>同时上传多个 File 对象到 OBS。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>batchPutFiles</em></p> </td> <td> <p><em>BatchPutFile[]</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>批量上传的文件对象数组</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>BatchPutObjectResults</em></p> </td> <td> <p><em>List&lt;BatchPutObjectResult&gt;</em></p> </td> <td> <p><em>返回结果对象 List,循环该 List 去得到每个文件上传后的结果集。</em></p> <p><em>每个 BatchPutObjectResult 对象中包含该文件上传信息(比如上传是否成功,上传失败原因,文件 MD5 值等)。</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(7) putObjectMultipart(分片上传)</strong></p> <p><strong>接口描述</strong></p> <p>对于大文件上传,可以切分成片上传。在以下情况下,应该考虑使用分片上传:</p> <ul> <li>文件大于 100M</li> <li>网络环境差,上传易导致失败</li> <li>需要支持断点续传</li> </ul> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>uploadFileRequest</em></p> </td> <td> <p><em>MutilpartUploadFileRequest </em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>分片上传参数&nbsp;uploadFileRequest&nbsp;说明:</em></p> <ul> <li><em>每个分片(除了最后一个分片)的大小必须不小于 5M,最后一个分片的大小无限制;</em></li> <li><em>若任何一个分片(非最后一个分片)小于 5M,每个分片的上传不会失败,然而分片完成操作(complete)会失败。</em></li> <li><em>enableCheckpoint 用于设置是否启用断点续传。默认启用。通过调用 uploadFileRequest.setEnableCheckpoint(false) 关闭断点续传功能。</em></li> <li><em>checkpointFile 用于设置断点续传 ucp 文件的保存位置。默认与待上传文件位于同一个目录下面。若非特殊需求,不需要更改此设置。</em></li> <li><em>uploadNotifier 用于设置分片上传的通知接收者。可以实现一个 MutilpartUploadNotifier,并调用 uploadFileRequest.setUploadNotifier 来接收分片上传的进展的通知,以达到如进度感知等目的。</em></li> <li><em>一般情况下,应当开启 enabledMd5 来保证文件内容的完整性(默认开启)。</em></li> </ul> <p><em>分片上传相较于 s3 已经简化了使用步骤。仅需要调用一个接口。</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(8) abortMultipartUpload(断点续传上传)</strong></p> <p><strong>接口描述</strong></p> <p>断点续传上传。分片上传的接口中,当参数 MutilpartUploadFileRequest 的 enableCheckpoint 被设置成 true 时(默认为true),断点续传功能被开启。断点续传允许重试失败的分片,而不需重传已经成功的分片。分片上传会在客户端的文件系统中创建一个分片记录(.ucp)文件。开启断点续传功能后,上传会读取该文件中的记录,而只传还未完成的分片;若此记录文件不存在,则会创建该记录文件,并从头开始上传文件。 由于分片上传的每个片会驻留在 OBS 中,直到所有分片上传完成且执行 complete 操作。未执行 complete 操作的上传,其相关的分片将占用存储资源。用户需要调用取消分片上传的接口来删除这些分片。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>abortRequest </em></p> </td> <td> <p><em>AbortMutilpartUploadRequest</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>初始化</em></p> <p><em>abortRequest参数需传入: </em></p> <p><em>&nbsp;bucket: 对象的 bucket 名称</em></p> <p><em>objectKey:对象 Key</em></p> <p><em>uploadId: 待删除的分片所属的 upload 编号。必须实现 uploadNotifier,在对应通知中获取 uploadId</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(9) putAndCompressObject(文件压缩上传)</strong></p> <p><strong>接口描述</strong></p> <p>将File对象进行压缩上传到对象存储,若对象存在则更新<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p><em>需自行实现策略保证同一 bucket 下 objectKey 唯一, 不能为空,首字符不能为路径符</em></p> </td> </tr> <tr> <td> <p><em>localFile</em></p> </td> <td> <p><em>File</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>待上传的文件对象</em></p> </td> <td> <p><em>不能超过 1GB</em></p> </td> </tr> <tr> <td> <p><em>metadata</em></p> </td> <td> <p><em>ObjectMetadata </em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>自定义元数据</em></p> </td> <td> <p><em>key-value 格式,key 只允许使用小写字母、数字、中横线</em></p> </td> </tr> <tr> <td> <p><em>mode</em></p> </td> <td> <p><em>CompressMode</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>压缩模式,目前支持<strong>MS,ML,ZIP,GZP,LZ4,LZO</strong>模式</em></p> </td> <td> <p><strong><em>极限模式(ML)</em></strong><em>:使用FastLZ算法对文件进行压缩/解压。FastLZ算法针对文本文件有很好压缩效果,经测试压缩率接近10%(压缩后文件大小/压缩前文件大小),同时对图片类型格式可取得较好的压缩效果,尤其对位图压缩率可以小于60%。但对于已经压缩文件和音视频文件压缩效果十分差。其压缩速度和解压速度优于传统zip方式。</em></p> <p><strong><em>极速模式(MS)</em></strong><em>:使用SNAPPY压缩算法对文件进行压缩/解压。SNAPPY算法针对文本文件压缩/解压,压缩率15%左右,图片类中对位图压缩缩率小于60%,但其压缩/解压速度为极限压缩数度5倍以上(压缩速度最可达100M/S,解压速度可达:400M/s)。</em></p> <p><strong><em>zip模式(ZIP)</em></strong><em>:使用JDK自带GZIP压缩算法对文件进行压缩/解压 。其详细信息参照JDK。</em></p> <p><strong><em>GZIP压缩(GZIP)</em></strong><em>:使用JDK自带DEFLATE算法对文件进行压缩/解压 。其详细信息参照JDK。</em></p> <p><strong><em>LZ4模式(LZ4)</em></strong><em>:使用LZ77优化后的算法LZ4对文件进行压缩/解压。其主要特点牺牲压缩率获取压缩速度。处理文本文件压缩率大于30%,图片类文件完全无法压缩。 压缩速度和解压速度略小于极速模式。</em></p> <p><strong><em>LZO模式(LZO)</em></strong><em>:LZO 是一个用 ANSI C语言编写的无损压缩库。LZO 非常适合进行数据的实时压缩解压处理,这就是说他更关心操作速度,而不是压缩比例。压缩速度为极速模式二分之一,解压速度为极速模式四分之一。</em></p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>putObjectResult</em></p> </td> <td> <p><em>PutObjectResult</em></p> </td> <td> <p><em>PutObjectResult对象</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(10)getObject(文件下载)</strong></p> <p><strong>接口描述</strong></p> <p>下载指定对象,此方法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。若仅为了获得对象的描述信息而非内容,请使用headObject接口。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>s3object</em></p> </td> <td> <p><em>S3Object</em></p> </td> <td> <p><em>包含对象流的 S3Object 实例,需读取 Content 自行保存</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(11)getSignedUrl(获取下载链接)</strong></p> <p><strong>接口描述</strong></p> <p>获取对象的已签名的下载 URL,使用默认设置。默认有效时间为 20 秒<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>响应参数</p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>url</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>已签名的对象下载 url</em></p> </td> <td> <p><em>url 具有默认的有效期,下载文件名为对象 Key</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(12)getSignedUrl(获取下载链接)</strong></p> <p><strong>接口描述</strong></p> <p>获取对象的已签名的下载 URL,指定返回 contentDisposition 头以告知浏览器如何显示文件,并使用默认的 url 有效期 20 秒<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>contentDisposition</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>在请求url时,期望云存储服务端返回的 content-disposition 头信息</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>url</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>已签名的对象下载 url</em></p> </td> <td> <p><em>已签名的对象下载 url,url 具有默认的有效期。最长 15 mins</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(13)getSignedUrl(获取下载链接)</strong></p> <p><strong>接口描述</strong></p> <p>获取对象的已签名的下载URL,指定返回contentDisposition头以告知浏览器如何显示文件,并指定url有效期(秒)<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>contentDisposition</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>在请求url时,期望云存储服务端返回的 content-disposition 头信息</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>expireSeconds</em></p> </td> <td> <p><em>long</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>url 有效秒数</em></p> </td> <td> <p><em>url 生成后,在此时间段内有效,过期的 url 会被云存储拒绝访问</em></p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>url</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>已签名的对象下载 url</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(14)getImageViewUrl(获取图片处理下载链接)</strong></p> <p><strong>接口描述</strong></p> <p>获取图片处理下载链接<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0" style="width:0px"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucketName</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>contentDisposition</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>在请求url时,期望云存储服务端返回的 content-disposition 头信息,默认为null</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>expireSeconds</em></p> </td> <td> <p><em>long</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>url有效秒数,url生成后,在此时间段内有效,过期的url会被云存储拒绝访问,默认为20s</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> <tr> <td> <p><em>formatOps</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>图片处理参数,具体设置值,请参考getImageView方法的文档</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>url</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>已签名的图片处理下载链接</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(15)batchGetObject(批量下载)</strong></p> <p><strong>接口描述</strong></p> <p>根据多个文件的 objectKey 同时下载多个文件。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucketName</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKeys</em></p> </td> <td> <p><em>String[]</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>&nbsp;objectKey 数组</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>batchS3ObjectList</em></p> </td> <td> <p><em>List&lt;BatchS3Object&gt;</em></p> </td> <td> <p><em>批量下载完毕后,SDK 将返回结果对象 List,循环该 List 去得到每个文件下载后的对象,该对象中包含所下载文件的文件流,另外还有该文件下载时的信息(比如下载是否成功,下载失败原因,文件 MD5 值等。)</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(16)getAndUncompressObject(文件解压下载)</strong></p> <p><strong>接口描述</strong></p> <p>解压指定objectKey对象,然后进行下载。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>s3Object</em></p> </td> <td> <p><em>S3Object</em></p> </td> <td> <p><em>包含对象流的 S3Object 实例,需读取 Content 自行保存</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(17)listObjects(查询bucket下的对象列表)</strong></p> <p><strong>接口描述</strong></p> <p>查询bucket下的对象列表。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>listObjectsRequest</em></p> </td> <td> <p><em>ListObjectsRequest </em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>listObjectsRequest: 查询参数:</em></p> <p><em>listObjectsRequest.delimiter 一个用于对KEY进行分组的字符。如果查询参数中指定了prefix,则在查询结果中,对KEY计算从prefix到第一次匹配delimiter的位置的截取串,所有KEY按此截取串进行分组且将结果放于元素CommonPrefixes下;若未指定prefix,则截取从KEY的开始位置执行计算。CommonPrefixes下面的KEY将不会在出现在查询结果中的其它位置。</em></p> <p><em>listObjectsRequest.marker指定查询KEY的起始位置(不包括此KEY)。</em></p> <p><em>listObjectsRequest. max-keys 查询结果最大Key的数量,默认为1000。</em></p> <p><em>listObjectsRequest.prefix指定查询前缀。</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>objectListing</em></p> </td> <td> <p><em>ObjectListing</em></p> </td> <td> <p><em>查询结果:</em></p> <p><em>ObjectListing .isTruncated 查询结果是否被截取。若被截取,则表示查询还有下一页。</em></p> <p><em>ObjectListing. nextMarker 下一页的mark。<strong>注意:</strong>此字段仅在请求中包含了delimiter参数时才会出现在响应中。否则,应该取响应中的KEY列表(object Summarie</em></p> <p><em>s)的最后一个元素作为下一页请求的mark参数。</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(18)headObject(获取文件信息)</strong></p> <p><strong>接口描述</strong></p> <p>获得对象描述信息以及自定义元数据</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>objectMetadata</em></p> </td> <td> <p><em>ObjectMetadata</em></p> </td> <td> <p><em>对象元数据 ObjectMetadata</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(19)deleteObject(删除Object)</strong></p> <p><strong>接口描述</strong></p> <p>删除指定对象</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(20)encryptFile(加密文件)</strong></p> <p><strong>接口描述</strong></p> <p>客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>file&nbsp;</em></p> </td> <td> <p><em>File&nbsp;</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>文件对象</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>keySource</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>加密文件用的密钥</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>文件加密流</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(21)encryptInputStream(加密文件流)</strong></p> <p><strong>接口描述</strong></p> <p>客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>文件流</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>keySource</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>加密文件用的密钥</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>文件加密流</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(22)decryptFile(解密文件)</strong></p> <p><strong>接口描述</strong></p> <p>客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>file&nbsp;</em></p> </td> <td> <p><em>File&nbsp;</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>文件对象</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>keySource</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>加密文件用的密钥</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>文件解密流</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(23)decryptInputStream(解密文件流)</strong></p> <p><strong>接口描述</strong></p> <p>客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>文件流</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>keySource</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>加密文件用的密钥</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>inputStream</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>文件解密流</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(24)getImageView(图片格式转换)</strong></p> <p><strong>接口描述</strong></p> <p>客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>mode</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>缩放方式,有效值 0-5&nbsp;;<strong>0</strong>: 限定缩略图的长边最多为&nbsp;,短边最多为&nbsp;,进行等比缩放,不裁剪。如果只指定 w 参数则表示限定长边(短边自适应),只指定 h 参数则表示限定短边(长边自适应)。</em></p> <p><strong><em>1</em></strong><em>: 限定缩略图的宽最少为&nbsp;,高最少为&nbsp;,进行等比缩放,居中裁剪。转后的缩略图通常恰好是&nbsp;x&nbsp;的大小(有一个边缩放的时候会因为超出矩形框而被裁剪掉多余部分)。如果只指定 w 参数或只指定 h 参数,代表限定为长宽相等的正方图。</em></p> <p><strong><em>2</em></strong><em>: 限定缩略图的宽最多为&nbsp;,高最多为&nbsp;,进行等比缩放,不裁剪。如果只指定 w 参数则表示限定宽(长自适应),只指定 h 参数则表示限定长(宽自适应)。它和模式0类似,区别只是限定宽和高,不是限定长边和短边。从应用场景来说,模式0适合移动设备上做缩略图,模式2适合PC上做缩略图。</em></p> <p><strong><em>3</em></strong><em>: 限定缩略图的宽最少为&nbsp;,高最少为&nbsp;,进行等比缩放,不裁剪。如果只指定 w 参数或只指定 h 参数,代表长宽限定为同样的值。你可以理解为模式1是模式3的结果再做居中裁剪得到的。</em></p> <p><strong><em>4</em></strong><em>: 限定缩略图的长边最少为&nbsp;,短边最少为&nbsp;,进行等比缩放,不裁剪。如果只指定 w 参数或只指定 h 参数,表示长边短边限定为同样的值。这个模式很适合在手持设备做图片的全屏查看(把这里的长边短边分别设为手机屏幕的分辨率即可),生成的图片尺寸刚好充满整个屏幕(某一个边可能会超出屏幕)。</em></p> <p><strong><em>5</em></strong><em>: 限定缩略图的长边最少为&nbsp;,短边最少为&nbsp;,进行等比缩放,居中裁剪。如果只指定 w 参数或只指定 h 参数,表示长边短边限定为同样的值。同上模式4,但超出限定的矩形部分会被裁剪。 `width:` 图片宽度,非负数,有效值(0-6000)</em></p> <p><em>height:&nbsp;图片高度,非负数,有效值(0-6000)</em></p> <p><em>imageFormat:&nbsp;图片格式(非必传),支持jpeg, tiff, gif, bmp, png</em></p> <p><em>&nbsp;</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>s3object</em></p> </td> <td> <p><em>S3Object</em></p> </td> <td> <p><em>包含对象流的 S3Object 实例,需读取 Content 自行保存</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(25)getThumbnail (获取缩略图或视频截图)</strong></p> <p><strong>接口描述</strong></p> <p>根据自定义规则获取缩略图或视频截图,缩略图支持格式jpeg, tiff, gif, bmp, png,截图支持格式:` jpg和png,此法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>formatName</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>适配规则名称: 作为条件从数据库获取对应的自定义规则,然后截取第一个/前的内容进行适配,若为imageView则是图片缩放,若为vframe,则是视频截图&nbsp;</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>rectify</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>false</em></p> </td> <td> <p><em>是否需要校正`(&ldquo;true&rdquo;或&rdquo;false&rdquo;,非必传),只对视频截图进行校正,旋转90或270(只是宽和高的长度换,并不是真正的旋转)</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>s3object</em></p> </td> <td> <p><em>S3Object</em></p> </td> <td> <p><em>包含对象流的 S3Object 实例,需读取 Content 自行保存</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(26)getCutImage (图片剪切)</strong></p> <p><strong>接口描述</strong></p> <p>根据宽度和高度获取剪切图,先截取图片左边和上边,截取到一定大小后(比较小的时候),会截取四边,保留中间部分,当设定值大于图片实际宽、高时,会根据实际大小裁剪,支持 jpeg, tiff, gif, bmp, emf, exif, wmf, icon, png, memoryBmp, webp。此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>width</em></p> </td> <td> <p><em>int</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>图片宽度,非负数,有效值(0-6000)</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>height</em></p> </td> <td> <p><em>int</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>图片高度,非负数,有效值(0-6000)</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>s3object</em></p> </td> <td> <p><em>S3Object</em></p> </td> <td> <p><em>包含对象流的 S3Object 实例,需读取 Content 自行保存</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(27)getImageInfo(获取图片信息)</strong></p> <p><strong>接口描述</strong></p> <p>获取指定图片信息。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>imageInfoStr</em></p> </td> <td> <p><em>InputStream</em></p> </td> <td> <p><em>图片信息,<strong>json</strong>格式字符串,示例如下:</em></p> <p><em>{</em></p> <p><em>&nbsp; &quot;<strong>ColorModel</strong>&quot;: &quot;rgb&quot;, //颜色模式</em></p> <p><em>&nbsp; &quot;<strong>Format</strong>&quot;: &quot;jpeg&quot;, //图片格式</em></p> <p><em>&nbsp; &quot;<strong>FrameNumber</strong>&quot;: 0, //缩放方式,与 mode 一样</em></p> <p><em>&nbsp; &quot;<strong>Height</strong>&quot;: 1707,</em></p> <p><em>&nbsp; &quot;<strong>Width</strong>&quot;: 963</em></p> <p><em>}</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(28)transCodingMedia(媒体转码)</strong></p> <p><strong>接口描述</strong></p> <p>媒体转码,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>format</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>转码后对象的格式</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>notifyURL</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>转码JOB的通知URL</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>s3object</em></p> </td> <td> <p><em>S3Object</em></p> </td> <td> <p><em>包含对象流的 S3Object 实例,需读取 Content 自行保存</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(29)getVedioFrame(视频截图)</strong></p> <p><strong>接口描述</strong></p> <p>获取视频截图,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>format</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>截图的格式、尺寸</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>s3object</em></p> </td> <td> <p><em>S3Object</em></p> </td> <td> <p><em>包含对象流的 S3Object 实例,需读取 Content 自行保存</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(30)getMediaInfo(获取媒体信息)</strong></p> <p><strong>接口描述</strong></p> <p>获取视频截图,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>objectKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段</strong></p> <p><strong>名称</strong></p> </td> <td> <p><strong>字段</strong></p> <p><strong>类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>mediaInfoStr</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>媒体对象的信息,<strong>json</strong>格式字符串,示例如下:</em></p> <p><em>{</em></p> <p><em>&quot;<strong>streams</strong>&quot;: [{</em></p> <p><em>&quot;<strong>index</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>codec_name</strong>&quot;: &quot;mjpeg&quot;,</em></p> <p><em>&quot;<strong>codec_long_name</strong>&quot;: &quot;MJPEG (Motion JPEG)&quot;,</em></p> <p><em>&quot;<strong>codec_type</strong>&quot;: &quot;video&quot;,</em></p> <p><em>&quot;<strong>codec_time_base</strong>&quot;: &quot;1/25&quot;,</em></p> <p><em>&quot;<strong>codec_tag_string</strong>&quot;: &quot;[0][0][0][0]&quot;,</em></p> <p><em>&quot;<strong>codec_tag</strong>&quot;: &quot;0x0000&quot;,</em></p> <p><em>&quot;<strong>width</strong>&quot;: 3885,</em></p> <p><em>&quot;<strong>height</strong>&quot;: 2764,</em></p> <p><em>&quot;<strong>has_b_frames</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>sample_aspect_ratio</strong>&quot;: &quot;1:1&quot;,</em></p> <p><em>&quot;<strong>display_aspect_ratio</strong>&quot;: &quot;3885:2764&quot;,</em></p> <p><em>&quot;<strong>pix_fmt</strong>&quot;: &quot;yuvj444p&quot;,</em></p> <p><em>&quot;<strong>level</strong>&quot;: -99,</em></p> <p><em>&quot;<strong>color_range</strong>&quot;: &quot;pc&quot;,</em></p> <p><em>&quot;<strong>color_space</strong>&quot;: &quot;bt470bg&quot;,</em></p> <p><em>&quot;<strong>chroma_location</strong>&quot;: &quot;center&quot;,</em></p> <p><em>&quot;<strong>refs</strong>&quot;: 1,</em></p> <p><em>&quot;<strong>r_frame_rate</strong>&quot;: &quot;25/1&quot;,</em></p> <p><em>&quot;<strong>avg_frame_rate</strong>&quot;: &quot;0/0&quot;,</em></p> <p><em>&quot;<strong>time_base</strong>&quot;: &quot;1/25&quot;,</em></p> <p><em>&quot;<strong>bits_per_raw_sample</strong>&quot;: &quot;8&quot;,</em></p> <p><em>&quot;<strong>disposition</strong>&quot;: {</em></p> <p><em>&quot;<strong>default</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>dub</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>original</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>comment</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>lyrics</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>karaoke</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>forced</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>hearing_impaired</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>visual_impaired</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>clean_effects&quot;</strong>: 0,</em></p> <p><em>&quot;<strong>attached_pic</strong>&quot;: 0</em></p> <p><em>}</em></p> <p><em>}],</em></p> <p><em>&quot;<strong>format</strong>&quot;: {</em></p> <p><em>&quot;<strong>filename</strong>&quot;: &quot;/wls/appsystems/csp-media/data/0b5f036604ea452fbc26810946293644xiaoming-bucket-0009.46a5476297c740239820ed4d64e256a6$002&quot;,</em></p> <p><em>&quot;<strong>nb_streams</strong>&quot;: 1,</em></p> <p><em>&quot;<strong>nb_programs</strong>&quot;: 0,</em></p> <p><em>&quot;<strong>format_name</strong>&quot;: &quot;jpeg_pipe&quot;,</em></p> <p><em>&quot;<strong>format_long_name</strong>&quot;: &quot;piped jpeg sequence&quot;,</em></p> <p><em>&quot;<strong>size</strong>&quot;: &quot;1659948&quot;,</em></p> <p><em>&quot;<strong>probe_score</strong>&quot;: 6</em></p> <p><em>}</em></p> <p><em>}</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(31)queryMediaByCKs(获取转码记录)</strong></p> <p><strong>接口描述</strong></p> <p>获取 media 转码记录,用于查询转码进度<strong>。</strong></p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>convertedKeys</em></p> </td> <td> <p><em>List&lt;String&gt;</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>转换后新生成的对象Key集合</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>mediaResultStr</em></p> </td> <td> <p><em>String&nbsp;</em></p> </td> <td> <p><em>音视频转码进度信息,json字符串,示例如下:</em></p> <p><em>[{</em></p> <p><em>&quot;<strong>bucket</strong>&quot;: &quot;yourBucket&quot;,</em></p> <p><em>&quot;<strong>finishTime</strong>&quot;: &quot;2017-07-14 13:56:54&quot;,</em></p> <p><em>&quot;<strong>submitTime</strong>&quot;: &quot;2017-07-14 13:56:53&quot;,</em></p> <p><em>&quot;<strong>startTime</strong>&quot;: &quot;2017-07-14 13:56:53&quot;,</em></p> <p><em>&quot;<strong>state</strong>&quot;: &quot;Error&quot;, // 状态,用于反应转码进度</em></p> <p><em>&quot;<strong>oriObjectKey</strong>&quot;: &quot;46a5476297c740239820ed4d64e256a6$002&quot;, // 原始key</em></p> <p><em>&quot;<strong>message</strong>&quot;: &quot;desFile.exists: false&quot;, // 失败原因</em></p> <p><em>&quot;<strong>convertedKey</strong>&quot;: &quot;yourConvertedKey &quot;</em></p> <p><em>}]</em></p> <p><em>&nbsp;</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(32)deleteMediaByCK(删除转码信息)</strong></p> <p><strong>接口描述</strong></p> <p>根据转换后新生成的 key 删除 media 转码记录及转码后的 object。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>bucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>保存对象的 bucket 名称</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>convertedKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>转换后新生成的对象 Key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(33)pfop(图片处理,音视频转码持久化处理(PFOP接口))</strong></p> <p><strong>接口描述</strong></p> <p>图片、音视频异步处理并持久化。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>sourceType</em></p> </td> <td> <p><em>SourceType</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>媒体类型</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>srcBucket</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>源bucket</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>srcKey</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>源key</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>force</em></p> </td> <td> <p><em>boolean</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>指定当处理后的KEY已经存在于bucket中是否覆盖已经存在的对象。为true时覆盖。</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>notifyUrl</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>异步处理完成后通知客户的地址。</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td> <p><em>ops</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>持久处理操作列表,用 | 分隔,如: </em></p> <p><em>avthumb/wma;</em></p> <p><em>saveas/ZGRhc2U6cGxhaW50ZXh0LWZyYW1lLTFa|avthumb/mp3;</em></p> <p><em>saveas/ZGRhc2U6cGxhaW50ZXh0LWZyYW1lMVU= 是将源视频文件转成wma并以KEY mywma 存储在bucket ddase下;转成mp3并以KEY mymp3 存储在bucket ddase下。</em></p> <p><em>一个持久处理包括处理命令和存储设置,用 ; 分隔。存储设置以saveas/开头,后接按Base64编码后的字符串。若不指定saveas,则会由obs生成一个key并保存在srcBucket下。</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0" style="width:0px"> <tbody> <tr> <td> <p><strong>字段名称</strong></p> </td> <td> <p><strong>字段类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>resultStr</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>Pfop</em><em>异步操作流水号</em><em>JSON</em><em>,用于查询操作进度。</em></p> <p><em>{&quot;<strong>persistentId</strong>&quot;:</em></p> <p><em>&quot;0443351fbb564de38542f8c092d18389fe9f8345f3ca&quot;}</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p><strong>(34)Prefop(PFOP持久化处理结果查询)</strong></p> <p><strong>接口描述</strong></p> <p>操作pfop操作进度和操作结果。</p> <p><strong>请求参数</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p><strong>参数名称</strong></p> </td> <td> <p><strong>参数类型</strong></p> </td> <td> <p><strong>是否必须</strong></p> </td> <td> <p><strong>参数描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>persistentId</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>true</em></p> </td> <td> <p><em>异步处理流水号</em></p> </td> <td> <p>&nbsp;</p> </td> </tr> </tbody> </table> <p><strong>响应参数</strong></p> <table border="1" cellpadding="0" cellspacing="0" style="width:0px"> <tbody> <tr> <td> <p><strong>字段</strong></p> <p><strong>名称</strong></p> </td> <td> <p><strong>字段</strong></p> <p><strong>类型</strong></p> </td> <td> <p><strong>字段描述</strong></p> </td> <td> <p><strong>备注</strong></p> </td> </tr> <tr> <td> <p><em>resultStr</em></p> </td> <td> <p><em>String</em></p> </td> <td> <p><em>查询响应为</em><em>content-type</em><em>为</em><em>application/json</em><em>的字符串,示例如下:</em></p> <p><em>{</em></p> <p><em>&quot;<strong>id</strong>&quot;:&quot;0f7edf1e508e4620b8784e5ca4dd7554fe9f82ff1b31&quot;,</em></p> <p><em>&quot;<strong>notifyState</strong>&quot;:&quot;0&quot;,</em></p> <p><em>&quot;<strong>desc</strong>&quot;:&quot;The fop was completed successfully&quot;,</em></p> <p><em>&quot;<strong>notifyTryTimes</strong>&quot;:4,</em></p> <p><em>&quot;<strong>items</strong>&quot;:[{</em></p> <p><em>&quot;<strong>cmd</strong>&quot;:&quot;convert/900/600/png/75&quot;,</em></p> <p><em>&quot;<strong>desc</strong>&quot;:&quot;success&quot;,</em></p> <p><em>&quot;<strong>error</strong>&quot;:&quot;&quot;,</em></p> <p><em>&quot;<strong>hash</strong>&quot;:&quot;\&quot;b2e18e821063c7713e497dd0c9a6a7e3\&quot;&quot;,</em></p> <p><em>&quot;<strong>code</strong>&quot;:0,</em></p> <p><em>&quot;<strong>key</strong>&quot;:&quot;ZGRhc2U6ZGRhc2VhYzRlZjIyOGQxNDQ0MDRiYmM5ZDYyNzE2ZWU5M2ZhNjA=&quot;},</em></p> <p><em>{&quot;<strong>cmd</strong>&quot;:&quot;thumb/0/700/800/png/75&quot;,</em></p> <p><em>&quot;<strong>desc</strong>&quot;:&quot;success&quot;,</em></p> <p><em>&quot;<strong>error</strong>&quot;:&quot;&quot;,</em></p> <p><em>&quot;<strong>hash</strong>&quot;:&quot;\&quot;ab63afa8d90fc944ed437d91d8d10b81\&quot;&quot;,</em></p> <p><em>&quot;<strong>code</strong>&quot;:0,</em></p> <p><em>&quot;<strong>key</strong>&quot;:&quot;ZGRhc2U6ZGRhc2U2YjIyOGQ0MWZjZmQ0NTllOGQ2OTRkYTgzNDJmYjkyYzA=&quot;},</em></p> <p><em>{&quot;<strong>cmd</strong>&quot;:&quot;imageslim&quot;,</em></p> <p><em>&quot;<strong>desc</strong>&quot;:&quot;success&quot;,</em></p> <p><em>&quot;<strong>error</strong>&quot;:&quot;&quot;,</em></p> <p><em>&quot;<strong>hash</strong>&quot;:&quot;\&quot;4e3cd2637001ce77d95928a0e961548f\&quot;&quot;,</em></p> <p><em>&quot;<strong>code</strong>&quot;:0,</em></p> <p><em>&quot;<strong>key</strong>&quot;:&quot;ZGRhc2U6ZGRhc2U0MTcwZWQ0NDc4NzU0NzNkYjUwM2Q5NzU2OTUxN2Y5NTA=&quot;</em></p> <p><em>}],</em></p> <p><em>&quot;<strong>inputKey</strong>&quot;:&quot;1222_1-test&quot;,</em></p> <p><em>&quot;<strong>inputBucket</strong>&quot;:&quot;ddase&quot;,</em></p> <p><em>&quot;<strong>code</strong>&quot;:0,</em></p> <p><em>&quot;<strong>notifyResponseCode</strong>&quot;:200</em></p> <p><em>}</em></p> </td> <td> <p><em>&nbsp;</em></p> </td> </tr> </tbody> </table> <p><strong>查询结果说明:</strong></p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="vertical-align:top"> <p><strong>名称</strong></p> </td> <td style="vertical-align:top"> <p><strong>必填</strong></p> </td> <td style="vertical-align:top"> <p><strong>描述</strong></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>code</em></p> </td> <td style="vertical-align:top"> <p><em>是</em></p> </td> <td style="vertical-align:top"> <p><em>状态码 0:成功,1:正在处理,2:处理成功但PFOP操作列表部分或全部失败,3:处理失败</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>desc</em></p> </td> <td style="vertical-align:top"> <p><em>否</em></p> </td> <td style="vertical-align:top"> <p><em>对应code的描述</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>id</em></p> </td> <td style="vertical-align:top"> <p><em>是</em></p> </td> <td style="vertical-align:top"> <p><em>PFOP持久处理流水号</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>inputBucket</em></p> </td> <td style="vertical-align:top"> <p><em>是</em></p> </td> <td style="vertical-align:top"> <p><em>源文件所在bucket</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>inputKey</em></p> </td> <td style="vertical-align:top"> <p><em>是</em></p> </td> <td style="vertical-align:top"> <p><em>源文件所在key</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>items</em></p> </td> <td style="vertical-align:top"> <p><em>否</em></p> </td> <td style="vertical-align:top"> <p><em>持久操作列表(仅当code码为0/2时该字段有值),与通知内容中的items一致,请参阅 通知内容说明</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>notifyState</em></p> </td> <td style="vertical-align:top"> <p><em>否</em></p> </td> <td style="vertical-align:top"> <p><em>通知状态 0:成功,1:等待通知,2:通知失败,3:通知彻底失败并不再尝试通知。为空表示处理还未完成。</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>notifyResponseCode</em></p> </td> <td style="vertical-align:top"> <p><em>否</em></p> </td> <td style="vertical-align:top"> <p><em>通知客户端的响应码,当响应为200时被认为通知成功</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>notifyResponseBody</em></p> </td> <td style="vertical-align:top"> <p><em>否</em></p> </td> <td style="vertical-align:top"> <p><em>通知响应,当通知失败时为失败相关的信息</em></p> </td> </tr> <tr> <td style="vertical-align:top"> <p><em>notifyTryTimes</em></p> </td> <td style="vertical-align:top"> <p><em>否</em></p> </td> <td style="vertical-align:top"> <p><em>通知客户端已经尝试的次数</em></p> </td> </tr> </tbody> </table> <p>&nbsp;</p>
以上内容是否解决了您的问题?
请补全提交信息!
咨询·建议

电话咨询 - 7x24 小时

400-151-8800

邮件咨询

cloud@pingan.com

在线客服

7x24 小时,急速解答

工单支持

解决云产品相关技术问题