追加上传
Append Object以追加写的方式上传文件。
通过Append Object操作创建的Object类型为Appendable Object,而通过Put Object上传的Object是Normal Object。
以下代码用于追加上传:
AppendObjectRequest append = new AppendObjectRequest("<bucketName>", "<objectName>", "<uploadFilePath>");
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("application/octet-stream");
append.setMetadata(metadata);
// 设置追加位置。
append.setPosition(0);
// 设置回调。
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
@Override
public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
}
});
// 异步追加上传。
OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
@Override
public void onSuccess(AppendObjectRequest request, AppendObjectResult result) {
Log.d("AppendObject", "AppendSuccess");
Log.d("NextPosition", "" + result.getNextPosition());
}
@Override
public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 异常处理。
}
});
当您使用Append方式上传,注意对追加位置(Position)这个参数进行正确的设置:
- 当您创建一个Appendable Object时,追加位置设为0。
- 当对Appendable Object进行内容追加时,追加位置设为Object当前长度。
有两种方式获取该Object长度:
- 通过上传追加后的返回内容获取。
- 通过head object获取文件长度。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论