全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

追加上传(Java)

最近更新时间:2025-01-03 17:13:48

通过Append Object上传的文件类型为Appendable,Appendable类型的文件后续可通过Append Object进行追加上传,非Appendable类型的文件不可通过Append Object进行追加上传。

获取下次追加位置

如果是首次追加上传,需设置追加位置为0,如果是非首次追加上传,需设置追加上传位置为上次追加上传响应的nextAppendPosition值。

如需获取文件的下次追加位置,可通过以下方法获取:

// 初始化ks3 client,具体方法参见“初始化”文档
Ks3Client client = initClient();

HeadObjectResult headObjectResult = client.headObject("<your-bucket>", "<your-objectKey>");
// 获取文件类型,Appendable类型才能进行追加上传
String objectType = headObjectResult.getObjectMetadata().getObjectType();
// 获取下次追加位置
long nextAppendPosition = headObjectResult.getObjectMetadata().getNextAppendPosition();

通过文件追加上传

// 初始化ks3 client,具体方法参见“初始化”文档
Ks3Client client = initClient();

// 填写本地文件的完整路径。
File file = new File("<path-of-your-file>");
AppendObjectRequest request = new AppendObjectRequest("<your-bucket>", "<object-key-append-to>", file);
// 设置追加位置,首次上传为0,非首次则为上次追加上传返回的nextAppendPosition,也可通过head object获取
request.setPosition(position);
// 设置其他信息,如 meta,acl,storageClass,objectTagging
// request.setObjectMeta(meta);
// request.setAcl(acl);
// request.setStorageClass(storageClass);
// request.setObjectTagging(tagging);

// 追加上传
AppendObjectResult appendObjectResult = client.appendObject(request);
// 获取下次追加位置
long nextAppendPosition = appendObjectResult.getNextAppendPosition();
// 获取etag
String eTag = appendObjectResult.geteTag();

通过流追加上传

// 初始化ks3 client,具体方法参见“初始化”文档
Ks3Client client = initClient();

// 填写本地文件的完整路径。
File file = new File("<path-of-your-file>");
// 使用流进行追加上传,注意:上传后须关闭流!这里try语句会自动关闭流
try (InputStream inputStream = Files.newInputStream(file.toPath())) {
    AppendObjectRequest request = new AppendObjectRequest("<your-bucket>", "<object-key-append-to>", inputStream);
    // 设置追加位置,首次上传为0,非首次则为上次追加上传返回的nextAppendPosition,也可通过head object获取
    request.setPosition(position);
    // 设置其他信息,如 meta,acl,storageClass,objectTagging
    // request.setObjectMeta(meta);
    // request.setAcl(acl);
    // request.setStorageClass(storageClass);
    // request.setObjectTagging(tagging);
    // 追加上传
    AppendObjectResult appendObjectResult = client.appendObject(request);
    // 获取下次追加位置
    long nextAppendPosition = appendObjectResult.getNextAppendPosition();
    // 获取etag
    String eTag = appendObjectResult.geteTag();
} catch(IOException e) {
    log.error("Error occurred", e);
}

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈