• 沒有找到結果。

说明

● 断点续传上传接口是利用分段上传特性实现的,是对分段上传的封装和加强。

● 断点续传上传接口不仅能在失败重传时节省资源提高效率,还因其对分段进行并发上传的机 制能加快上传速度,帮助用户快速完成上传业务;且其对用户透明,用户不用关心

checkpoint文件的创建和删除、分段任务的切分、并发上传的实现等内部细节。

● enableCheckpoint参数默认是false,代表不启用断点续传模式,此时断点续传上传接口退 化成对分段上传的简单封装,不会产生checkpoint文件。

● checkpointFile参数和enableCheckSum参数仅在enableCheckpoint参数为true时有效。

● 由于 HTTP 编码规范限制,无法发送非 ASCII 码字符,SDK 会在发送请求时对您头域中的中 文汉字进行 url 编码,发送编码后数据。如您设置的值 content-disposition 为 ”attachment;

filename="中文.txt"”,则对象元数据中存储的信息为”attachment;

filename="%E4%B8%AD%E6%96%87.txt"”。使用浏览器访问时浏览器将会自动解码。

● 如若不需要 SDK 帮您编码,可以调用 UploadFileRequest.setIsEncodeHeaders(false) 关闭 自动编码。

9.11 基于表单上传

须知

开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论 坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。

基于表单上传是使用HTML表单形式上传对象到指定桶中,对象最大不能超过5GB。

您可以通过ObsClient.createPostSignature生成基于表单上传的请求参数。使用代码模 拟表单上传的完整代码示例,参见PostObjectSample。您也可以通过如下步骤进行表 单上传:

步骤1 使用ObsClient.createPostSignature生成用于鉴权的请求参数。

步骤2 准备表单HTML页面。

步骤3 将生成的请求参数填入HTML页面。

步骤4 选择本地文件,进行表单上传。

----结束

Java SDK 开发指南 9 上传对象

说明

使用SDK生成用于鉴权的请求参数包括两个:

● policy,对应表单中policy字段。

● signature,对应表单中的signature字段。

以下代码展示了如何生成基于表单上传的请求参数:

String endPoint = "http://your-endpoint";

String ak = "*** Provide your Access Key ***";

String sk = "*** Provide your Secret Key ***";

// 创建ObsClient实例

final ObsClient obsClient = new ObsClient(ak, sk, endPoint);

PostSignatureRequest request = new PostSignatureRequest();

// 设置表单参数

Map<String, Object> formParams = new HashMap<String, Object>();

// 设置对象访问权限为公共读

formParams.put("x-obs-acl", "public-read");

// 设置对象MIME类型

formParams.put("content-type", "text/plain");

request.setFormParams(formParams);

// 设置表单上传请求有效期,单位:秒 request.setExpires(3600);

PostSignatureResponse response = obsClient.createPostSignature(request);

// 获取表单上传请求参数

System.out.println("\t" + response.getPolicy());

System.out.println("\t" + response.getSignature());

示例表单HTML代码如下:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>

<body>

<form action="http://bucketname.your-endpoint/" method="post" enctype="multipart/form-data">

Object key

<!-- 对象名 -->

<input type="text" name="key" value="objectname" />

<p>

ACL<!-- 对象ACL权限 -->

<input type="text" name="x-obs-acl" value="public-read" />

<p>

Content-Type

<!-- 对象MIME类型 -->

<input type="text" name="content-type" value="text/plain" />

<p>

<!-- policy的base64编码值 -->

<input type="hidden" name="policy" value="*** Provide your policy ***" />

<!-- AK -->

<input type="hidden" name="AccessKeyId" value="*** Provide your access key ***"/>

<!-- 签名串信息 -->

<input type="hidden" name="signature" value="*** Provide your signature ***"/>

<input name="file" type="file" />

<input name="submit" value="Upload" type="submit" />

</form>

</body>

</html>

Java SDK 开发指南 9 上传对象

说明

● HTML表单中的policy,signature的值均是从ObsClient.createPostSignature的返回结果中获 取。

● 您可以直接下载表单HTML示例PostDemo。

Java SDK 开发指南 9 上传对象

10 下载对象