调用 创建任务并获取上传密钥 或 再次获取上传密钥 后,使用返回的 data.params 临时凭证上传建模输入数据。
- 建议上传统一使用分片上传。
- 临时上传凭证的使用方式,均以具体云服务商的官方文档为准。
- 分片数量上限为 10000,大文件请按总大小计算分片大小,避免超出分片数上限。
- 文件最终 Key 为
savePath 加文件相对路径。 - 临时凭证默认有效期 12 小时,过期后调用 再次获取上传密钥 续期。
接口返回的 data.params.cloudService 决定使用哪一套 SDK。每个接入方通常只固定对接一个云服务商,无需全部对接。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProvider;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;
public class Demo {
public static void main(String[] args) throws Exception {
String accessKeyId = "yourSTSAccessKeyID";
String accessKeySecret = "yourSTSAccessKeySecret";
String stsToken = "yourSecurityToken";
String endpoint = "endpoint";
String region = "region";
String bucket = "bucket";
String key = "prd/spatial-model/{accountId}/{taskCode}/input/render2/info/poses.json";
CredentialsProvider credentialsProvider =
new DefaultCredentialProvider(accessKeyId, accessKeySecret, stsToken);
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
conf.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(conf)
.region(region)
.build();
try {
PutObjectRequest req =
new PutObjectRequest(bucket, key, new File("D:\\localpath\\poses.json"));
PutObjectResult result = ossClient.putObject(req);
} catch (OSSException oe) {
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
} catch (ClientException ce) {
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) ossClient.shutdown();
}
}
}
public static void main(String[] args) throws Exception {
String accessKeyId = "yourSTSAccessKeyID";
String accessKeySecret = "yourSTSAccessKeySecret";
String securityToken = "yourSecurityToken";
String region = "region";
String bucket = "bucket";
String key = "prd/spatial-model/{accountId}/{taskCode}/input/render2/info/poses.json";
AwsSessionCredentials sessionCredentials = AwsSessionCredentials.create(
accessKeyId, accessKeySecret, securityToken);
S3Client s3Client = S3Client.builder()
.region(Region.of(region))
.credentialsProvider(StaticCredentialsProvider.create(sessionCredentials))
.build();
PutObjectRequest putObjectRequest = PutObjectRequest.builder()
.bucket(bucket)
.key(key)
.build();
s3Client.putObject(putObjectRequest, java.nio.file.Paths.get("D:\\resource\\poses.json"));
}
public Ks3Client initKs3Client() {
String accessKeyId = "yourSTSAccessKeyID";
String accessKeySecret = "yourSTSAccessKeySecret";
String securityToken = "yourSecurityToken";
String endpoint = "yourEndpoint";
String region = "region";
Ks3ClientConfig config = new Ks3ClientConfig();
config.setEndpoint(endpoint);
config.setRegion(Region.valueOf(region));
config.setProtocol(Ks3ClientConfig.PROTOCOL.http);
config.setHttpClientConfig(new HttpClientConfig());
return new Ks3Client(accessKeyId, accessKeySecret, securityToken, config);
}
调用 上传状态更新 并传 status = 3,否则建模不会启动。