说明
● 断点续传上传接口是利用分段上传特性实现的,是对分段上传的封装和加强。
● 断点续传上传接口不仅能在失败重传时节省资源提高效率,还因其对分段进行并发上传的机 制能加快上传速度,帮助用户快速完成上传业务;且其对用户透明,用户不用关心
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 上传对象