详情页标题前

阿里云对象存储OSSJavaSDK实现数据流分片上传的代码样例-云淘科技

详情页1

概述

OSS的Java SDK提供了上传的样例,具体代码中使用的是实现本地文件的分片上传。但是在实际使用过程中,服务端可能获取的是网络流数据并用来进行分片上传,该方法需要将网络流数据保存为本地文件后,再上传该文件,这便会涉及中转存储的再上传步骤,即非实时的上传。本文主要提供数据流分片上传的实现样例。

详细信息

数据流分片上传中,需要对数据流进行clone操作,其中inputstream是不能重复读。以下是数据流分片上传的代码样例。

说明

说明:代码中cloneInputStream是复制数据流的实现。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.CompleteMultipartUploadRequest;
import com.aliyun.oss.model.CompleteMultipartUploadResult;
import com.aliyun.oss.model.InitiateMultipartUploadRequest;
import com.aliyun.oss.model.InitiateMultipartUploadResult;
import com.aliyun.oss.model.PartETag;
import com.aliyun.oss.model.UploadPartRequest;
import com.aliyun.oss.model.UploadPartResult;

public class MutilpartUpload {
public static void main(String[] args) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
String accessKeyId = "xxx";
String accessKeySecret = "xxx";
String bucketName = "dahecs1";
// 表示上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
String objectName = "11/aaaatest11123";

String filePath = "/Users/wanghe/Downloads/aaaatest111";

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 创建InitiateMultipartUploadRequest对象。
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);

// 如果需要在初始化分片时设置文件存储类型,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// request.setObjectMetadata(metadata);

// 初始化分片。
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
// 返回uploadId,它是分片上传事件的唯一标识,您可以根据这个uploadId发起相关的操作,如取消分片上传、查询分片上传等。
String uploadId = upresult.getUploadId();

// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
List partETags = new ArrayList();
// 计算文件有多少个分片。
try {
InputStream instream = new FileInputStream(filePath);

final long partSize = 1 * 1024 * 1024L; // 1MB
final File sampleFile = new File(filePath);
long fileLength1 = sampleFile.length();
long fileLength = instream.available();
int partCount = (int) (fileLength / partSize);
if (fileLength % partSize != 0) {
partCount++;
}
// 遍历分片上传。
ByteArrayOutputStream baos = cloneInputStream(instream);
//InputStream stream2 = null;
for (int i = 0; i  -1) {
baos.write(buffer, 0, len);
}
baos.flush();
return baos;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

}

相关文档

关于OSS中分片上传的更多信息,请参见分片上传。

适用于

  • 对象存储OSS

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/159652.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSS什么是OSS ON云盒-云淘科技

    OSS ON云盒为云盒(CloudBox)产品提供了非结构化数据本地存储、本地访问、以及本地处理的能力。您可以在OSS ON云盒中创建存储空间(Bucket),并使用与公共云一致的API、SDK访问云盒中的OSS。 功能优势 云盒是阿里云提供的全托管云服务。公共云的硬件设施以软硬一体化方式部署到您本地机房,满足您业务上的数据安全、数据本地处理、低延时等需求。…

    阿里云对象存储 2023年12月10日
  • 阿里云ECS云服务器DescribeDedicatedBlockStorageClusters-云淘科技

    调用DescribeDedicatedBlockStorageClusters查询已创建的专属块存储集群列表。 接口说明 说明 专属块存储集群功能目前支持华南2(河源)、印度尼西亚(雅加达)以及华南1(深圳)地域。 请求参数的作用类似于一个过滤器,过滤器为逻辑与(AND)关系。如果某一参数为空,则过滤器不起作用。 在分页查询时,推荐您使用MaxResults…

    阿里云服务器 2023年12月9日
  • 阿里云对象存储OSS重定向-云淘科技

    配置了重定向规则后,当请求者访问Bucket发生指定错误时,OSS会将请求重定向至回源规则指定的源站。您可以利用这种跳转的功能对文件做重定向以及在此基础之上的各种业务。 使用限制 规则数量 回源规则最多配置20条,按RuleNumber的先后顺序依次匹配。如果命中当前规则,则后续规则不再匹配。规则未命中表示没有匹配回源条件,与回源后是否成功获取目标文件无关。…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云负载均衡UpdateLoadBalancerAttribute – 更新负载均衡实例属性-云淘科技

    更新负载均衡实例属性,如名称、修改保护等。 接口说明 UpdateLoadBalancerAttribute接口属于异步接口,即系统返回一个请求ID,但该应用型负载均衡实例属性尚未修改成功,系统后台的修改任务仍在进行。您可以调用GetLoadBalancerAttribute查询应用型负载均衡实例属性的修改状态: 当应用型负载均衡实例属性处于Configur…

    阿里云负载均衡 2023年12月9日
  • 阿里云云原生大数据计算服务 MaxComputeTunnel SDK常见问题-云淘科技

    本文为您介绍使用Tunnel SDK过程中的常见问题。 问题类别 常见问题 Tunnel SDK Upload 使用Tunnel SDK上传数据时,上传的数据可以自动分配到各个分区吗? 使用Tunnel SDK上传数据时,编写完UDF打成JAR包后上传,对JAR包大小有要求吗? 使用Tunnel SDK上传数据时,是否有分区数量限制? 使用Tunnel SD…

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。