文档首页 > > SDK参考> Java> 上传对象> 基于表单上传

基于表单上传

分享
更新时间: 2019/11/21 GMT+08:00

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

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

  1. 使用ObsClient.createPostSignature生成用于鉴权的请求参数。
  2. 准备表单HTML页面。
  3. 将生成的请求参数填入HTML页面。
  4. 选择本地文件,进行表单上传。

使用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>
<!-- policybase64编码值 -->
<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>
  • HTML表单中的policy,signature的值均是从ObsClient.createPostSignature的返回结果中获取。
  • 您可以直接下载表单HTML示例PostDemo
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区