跳到主要内容

获取设备文件上传策略

  • 通过该接口拿到上传文件的签名策略,上传完成后系统会根据不同的上传类型解析

请求

iot/device/file_upload_policy

参数必填类型说明
uploadTypeEnum上传类型

uploadType 枚举值

枚举值限制的文件后缀限制的文件MimeType限制的文件大小说明
SCENE_OPERATION_TXT_01zip
txt
application/zip
text/plain
2M场景运营数据文件,上传后系统解析批量新增,单个新增接口场景数据上传

响应

参数必填类型说明
accessidString用户请求的accessid
policyString用户表单上传的策略(Policy),是经过Base64编码过的字符串
dirString限制路径前缀
hostString用户要往哪个域名发送上传请求
signatureString对Policy签名后的字符串
expireString上传策略Policy失效时间
formFieldsObject其他的表单信息,原样上传

请求示例

{
"uploadType": "SCENE_OPERATION_TXT_01"
}

返回值示例

{
"accessid": "accessid_0c54f692c5be",
"policy": "policy_203f173f5a76",
"dir": "dir_ca7a93a643ab",
"host": "host_55d2fc7e5823",
"signature": "signature_c6b53800ba73",
"expire": "1728704512",
"formFields": {
"x:fileno": "851202410121133327518292923",
"callback": "eyJjYWxsYmFja1VybCI6Imh0dHBzOi8vb3BlbmFwaS5YWxsYmFja1NOSSI6ZmFsc2V9"
}
}

上传文件示例


public static void policyUploadFile(UploadPolicyResult uploadPolicyResult, String localFile) throws Exception {
File file = new File(localFile);
Map<String, String> requestFiled = new LinkedHashMap<>();
//文件名建议增加随机字符,不要重复,重复会覆盖原有文件
requestFiled.put("key", uploadPolicyResult.getDir() + file.getName());
requestFiled.put("OSSAccessKeyId", uploadPolicyResult.getAccessid());
requestFiled.put("policy", uploadPolicyResult.getPolicy());
requestFiled.put("Signature", uploadPolicyResult.getSignature());
requestFiled.putAll(uploadPolicyResult.getFormFields());

HttpPost httpPost = new HttpPost(uploadPolicyResult.getHost());
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
for (Map.Entry<String, ?> entry : requestFiled.entrySet()) {
builder.addTextBody(entry.getKey(), entry.getValue().toString());
}
String contentType = new MimetypesFileTypeMap().getContentType(file);
// file必须为最后一个表单域,除file以外的其他表单域无顺序要求。
builder.addPart("file", new FileBody(file, contentType));
HttpEntity reqEntity = builder.build();
httpPost.setEntity(reqEntity);

try (CloseableHttpResponse httpResponse = HttpClients.createDefault().execute(httpPost)) {
result = EntityUtils.toString(httpResponse.getEntity());
}
}