bucketName ---oss上bucket的名字

key ---文件所在的文件夹加文件名

例如:我想把ceshi.txt 存放在bucket叫aa的里面叫bb的文件夹下。那么我的bucketName传的值就是 aa,key值是bb/ceshi.txt

public String multipartUploadObject(String bucketName, String key,File partFile) {

String tag = null;

String uploadid = null;

int j=0;

// 初始化一个OSSClient

OSSClient client = this.createOSSClient();

ListMultipartUploadsRequest lmur = new ListMultipartUploadsRequest(bucketName);

// 获取Bucket内所有上传事件

MultipartUploadListing listing = client.listMultipartUploads(lmur);

// 新建一个List保存每个分块上传后的ETag和PartNumber

List partETags = new ArrayList();

// 遍历所有上传事件 设置UploadId

for (MultipartUpload multipartUpload : listing.getMultipartUploads()) {

if (multipartUpload.getKey().equals(key)) {

uploadid=multipartUpload.getUploadId();

break;

}

}

if(StringUtils.isEmpty(uploadid)){

// 开始Multipart Upload,InitiateMultipartUploadRequest 来指定上传Object的名字和所属Bucke

InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(bucketName, key);

InitiateMultipartUploadResult initiateMultipartUploadResult = client.initiateMultipartUpload(initiateMultipartUploadRequest);

uploadid=initiateMultipartUploadResult.getUploadId();

}else{

ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName,key, uploadid);

//listParts 方法获取某个上传事件所有已上传的块

PartListing partListing = client.listParts(listPartsRequest);

// 遍历所有Part

for (PartSummary part : partListing.getParts()) {

partETags.add(new PartETag(part.getPartNumber(),part.getETag()));

j++;

}

}

// 设置每块为 5M(最小支持5M)

final int partSize = 1024 * 1024 * 5;

// 计算分块数目

int partCount = (int) (partFile.length() / partSize);

if (partFile.length() % partSize != 0) {

partCount++;

}

try {

for (int i=j ; i < partCount; i++) {

// 获取文件流

FileInputStream fis;

fis = new FileInputStream(partFile);

// 跳到每个分块的开头

long skipBytes = partSize * i;

fis.skip(skipBytes);

// 计算每个分块的大小

long size = partSize < partFile.length() - skipBytes ? partSize: partFile.length() - skipBytes;

// 创建UploadPartRequest,上传分块

UploadPartRequest uploadPartRequest = new UploadPartRequest();

uploadPartRequest.setBucketName(bucketName);

uploadPartRequest.setKey(key);

uploadPartRequest.setUploadId(uploadid);

uploadPartRequest.setInputStream(fis);

uploadPartRequest.setPartSize(size);

uploadPartRequest.setPartNumber(i + 1);

UploadPartResult uploadPartResult = client.uploadPart(uploadPartRequest);

// 将返回的PartETag保存到List中。

partETags.add(uploadPartResult.getPartETag());

// 关闭文件

fis.close();

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, key, uploadid, partETags);

// 完成分块上传

CompleteMultipartUploadResult completeMultipartUploadResult = client.completeMultipartUpload(completeMultipartUploadRequest);

// 打印Object的ETag(返回的ETag不是md5.具体是什么不详)

tag = completeMultipartUploadResult.getETag();

return tag;

}

java oss 断点上传文件_java实现oss断点续传相关推荐

  1. java断点上传下载_java实现多线程断点续传,上传下载 分享

    程序采用的ftp工具, apache 的 commons-net-ftp-ftpclient package com.ftp; import java.io.File; import java.io. ...

  2. java 模拟post上传文件_Java模拟post请求上传文件

    Java代码实现 /** * 模拟文件post上传 * @param urlStr(接口地址) * @param formName(接口file接收名) * @param fileName(需要上传文 ...

  3. java 模拟post上传文件_JAVA模拟HTTP post请求上传文件

    在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...

  4. java http post上传文件_Java通过HTTP POST请求上传文件

    我想创建一个Java应用程序来执行以下在Windows上的CURL中工作.Java通过HTTP POST请求上传文件 curl -x XXX.XXX.XXX.XXX:8080 -X POST --da ...

  5. java上传文件夹到oss

    前段时间正好做个项目,就是用的oss,普通上传和断点续传,代码贴出来,看是不是你们需要的 public class OssManage {     public static  String ACCE ...

  6. java request上传文件_java使用ServletFileUpload上传文件,ServletFileUpload.parseRequest(request)报错。...

    java使用ServletFileUpload上传文件,ServletFileUpload.parseRequest(request)报错.在我本地是好的,linux服务器上就报错.错误信息:org. ...

  7. java sftp 上传文件_java使用SFTP上传文件到资源服务器

    本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下 首先得创建连接sftp服务器的公共类MySftp.java: package cn.test.util; ...

  8. java ftp 上传文件到服务器,java实现ftp上传文件到服务器

    java实现ftp上传文件到服务器 内容精选 换一换 怎样上传文件到Windows操作系统云服务器?安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ ...

  9. 上传文件到阿里oss

    上传文件到阿里oss 代码示例 阿里云官方文档 项目中一般会遇到上传图片或者文件到oss上,本次采用阿里云的oss,上传方式有两种:一种是先上传到服务器再上传到oss然后删除服务器上的文件,第二种直接 ...

最新文章

  1. 中国治理蝗灾是生物防治的成就,根本不是靠鸡靠鸭靠吃货换来的!
  2. SSD数据可靠性问题分析
  3. 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务
  4. C#LeetCode刷题-双指针
  5. [导入][你必须知道的.NET] 第三回:历史纠葛:特性和属性
  6. 【报告分享】交通运输行业:2019年度中国主要城市交通分析报告.pdf(附下载链接)...
  7. python画一个祝福别人生日快乐_还在送生日贺卡?试试为家人朋友创作一个生日动画短视频吧...
  8. 模拟CMOS集成电路设计学习笔记(一)
  9. 面试计算机有什么优势和不足,面试时如何介绍自己的优缺点
  10. 布局中颜色搭配怎么看最舒服之白色的最佳10种颜色搭配
  11. Python_Dataframe_去除重复数据
  12. 杰理之电脑连接样机蓝牙,开启音量同步,电脑无法大范围调节音量【篇】
  13. 傅里叶入门--动手演示波形叠加
  14. matlab调整文字方向,MATLAB改变ylabel文字方向以及截边
  15. 百度浏览器的隐私安全问题分析
  16. mac电脑上网突然变得很慢
  17. hadoop和spark主备HA配置说明
  18. 嵌入式Linux系统的电子书阅读器项目1——Overview
  19. 关于p值的一些经验法则
  20. 乐学python慕课答案_乐学软件工程

热门文章

  1. 用共振频率去进行图片分类的尝试
  2. 9. 混合模型和EM(1)
  3. 8.1 A Bayesian Methodology for Systemic Risk Assessment in Financial Networks(4)
  4. stm32 标准库一些比较容易犯的错误
  5. LINUX 使用tcgetattr函数与tcsetattr函数控制终端四
  6. 十 ubus安装编译
  7. BRCM eCos下的编译及问题
  8. Linux文件系统映像:Initranfs 和 Initrd
  9. RocketMQ高性能之底层存储设计
  10. Python第一弹--------初步了解Python