调用该接口生成文件上传到OSS的信息。
使用说明
该接口为阿里云物联网平台中,设备管理相关业务通用的文件上传接口,文件上传完成后,请按照对应业务接口的要求传递文件的信息。
步骤如下:
1. 调用本接口生成文件上传到对象存储(OSS)的信息。
本接口的返回参数是调用OSS PostObject上传文件的请求参数,包含Key、OSSAccessKeyId、Signature和Policy。
2. 请在本接口返回结果后的1分钟之内,使用OSS SDK调用PostObject接口上传文件。上传文件的代码示例,请参见下文“返回参数的用途”。
3. 文件上传完成后,请在60分钟内,调用对应业务接口,否则上传的文件将被系统定期自动清理。
例如,创建自定义类型的设备任务时,如果需要传入设备文件,请先使用该接口上传文件,再把相关的文件信息作为请求参数,来调用CreateJob接口。
QPS限制
单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为5。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | GenerateFileUploadURL |
系统规定参数。取值:GenerateFileUploadURL。 |
BizCode | String | 是 | DEVICE_JOB_FILE |
文件所属的业务场景编码。 设备任务文件使用DEVICE_JOB_FILE。 |
FileSuffix | String | 是 | bin |
文件扩展名。可选:bin、apk、tar、gz、tar.gz、zip、gzip。 |
IotInstanceId | String | 否 | iot-cn-0pp1n8t**** |
实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID。 重要
实例的更多信息,请参见实例概述。 |
FileName | String | 否 | file1 |
文件名称。名称不可包含短划线(-)、英文句号(.)、星号(*)、正斜线(/)、井号(#)、百分号(%)、and(&)、at(@)、反斜线(\),长度不可超过64个字符。 如果不传入该参数,系统将为文件自动生成随机字符串作为文件名称。 |
调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。公共请求参数说明,请参见公共参数文档。
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
Code | String | iot.system.SystemException |
调用失败时,返回的错误码。更多信息,请参见错误码。 |
Data | Struct |
调用成功时,返回的文件上传信息。详情参见以下参数信息。 |
|
Host | String | https://iotx-bucket-name.oss-***.aliyuncs.com |
OSS的接入域名。 |
Key | String | subpath/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.suffix |
调用OSS的PostObject接口上传对象(即文件)的名称,包含OSS对象的完整路径。 |
ObjectStorage | String | OSS |
对象存储类型。默认为OSS。 |
OssAccessKeyId | String | cS8uRRy54Rsz**** |
OSS Bucket拥有者的AccessKey ID。 该OSS Bucket将存储文件。 |
Policy | String | eyJleHBpcmF**** |
OSS通过该参数验证请求表单域的合法性。 |
Signature | String | v6lViO4FBvfquajQjg20K5hK**** |
根据AccessKey Secret和Policy计算出的签名信息。调用OSS API时,OSS验证该签名信息,从而确认Post请求的合法性。 |
ErrorMessage | String | 系统异常 |
调用失败时,返回的出错信息。 |
RequestId | String | E55E50B7-40EE-4B6B-8BBE-D3ED55CCF565 |
阿里云为该请求生成的唯一标识符。 |
Success | Boolean | true |
表示是否调用成功。
|
返回参数的用途
调用OSS PostObject接口时,使用本接口的返回参数值作为请求参数值,将您编辑好的文件上传到对象存储(OSS)。
关于上传文件的SDK示例,请参见文件上传。
以下是向对象存储OSS上传文件的Java代码示例。
- 在pom.xml中添加以下依赖。
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.10</version> </dependency>
- 上传文件的代码如下。
public static boolean postObject(String key, String host, String policy, String ossAccessKeyId, String signature, String data) throws IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost(host); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("key", key, ContentType.TEXT_PLAIN); builder.addTextBody("policy", policy, ContentType.TEXT_PLAIN); builder.addTextBody("OSSAccessKeyId", ossAccessKeyId, ContentType.TEXT_PLAIN); builder.addTextBody("signature", signature, ContentType.TEXT_PLAIN); builder.addTextBody("success_action_status", "200", ContentType.TEXT_PLAIN); builder.addBinaryBody("file", data.getBytes()); HttpEntity multipart = builder.build(); uploadFile.setEntity(multipart); CloseableHttpResponse response = httpClient.execute(uploadFile); if (response.getStatusLine().getStatusCode() == 200) { return true; } return false; }
示例
请求示例
http(s)://iot.cn-shanghai.aliyuncs.com/?Action=GenerateFileUploadURL
&BizCode=DEVICE_JOB_FILE
&FileSuffix=bin
&<公共请求参数>
正常返回示例
XML
格式
<GenerateFileUploadURLResponse>
<RequestId>E55E50B7-40EE-4B6B-8BBE-D3ED55CCF565</RequestId>
<Data>
<Policy>eyJleHBpcmF****</Policy>
<Signature>v6lViO4FBvfquajQjg20K5hK****</Signature>
<ObjectStorage>OSS</ObjectStorage>
<Host>https://iotx-bucket-name.oss-***.aliyuncs.com</Host>
<OssAccessKeyId>cS8uRRy54Rsz****</OssAccessKeyId>
<Key>subpath/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.suffix</Key>
</Data>
<Success>true</Success>
</GenerateFileUploadURLResponse>
JSON
格式
{
"RequestId": "E55E50B7-40EE-4B6B-8BBE-D3ED55CCF565",
"Data": {
"Policy": "eyJleHBpcmF****",
"Signature": "v6lViO4FBvfquajQjg20K5hK****",
"ObjectStorage": "OSS",
"Host": "https://iotx-bucket-name.oss-***.aliyuncs.com",
"OssAccessKeyId": "cS8uRRy54Rsz****",
"Key": "subpath/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.suffix"
},
"Success": true
}
错误码
访问错误中心查看更多错误码。