java阿里云oss断点续传获取上传进度

时间:2024-04-14 08:06:42

最近公司ERP系统要做上传图片功能,让我写个oss的上传功能,集成到里面.就研究了一下oss.官方文档说明:java版的SDK流式上传有上传进度,断点续传没有.在网上查询许久也没有找到相应资料.就自己看源码,断点续传获取上传进度功能也实现了.(自己有些问题上网查资料,解决了许多问题.因此自己也赶紧把自己做成的成果分享给大家.感谢网上无私奉献的人,)

因为每个人的功能需求不一样,大家可以按照我这种思路在进行合理化更改

步骤:

1.下载oss最新源码

java阿里云oss断点续传获取上传进度

我下载的是最新版本的2.8.2   sources文件夹是oss源码, samples文件夹是oss各种调用的测试demo, lib文件夹是支持jar包

2.导入eclipse

我是直接建立一个java项目,然后把sources文件夹里面com整个文件夹复制到项目里,还有samples文件夹,再把支持的jar包导进去

java阿里云oss断点续传获取上传进度

可以看到:因为我只需要断点续传,所以我把其他测试Demo都删了就留下断点续传的Demo

3.找到oss上传调用的类,我debug模式找啊找,发现几处oss上传完成时都要在记录文件里写入上传记录,然后我就在那里拦截了一下

java阿里云oss断点续传获取上传进度

OSSUploadOperation.java  这个类文件里面

java阿里云oss断点续传获取上传进度

具体的原因细节,也不是我这种菜鸟一句话,两句话能说明白的,结果:就是每次oss上传成功后,都会调用这个方法,number是分片序号,offset是已上传成功的总进度,length是每次上传的进度.因为他这是个静态的,所以我写了一个静态的方法,

java阿里云oss断点续传获取上传进度

每次上传成功一个分片后,利用oss写入记录文件的流程,拿到上传进度,写入一个文件,打车Jar包后,公司的ERP系统(C写的)命令行启动传入main方法参数,后每1秒读取这个进度文件,来实现断点上传进度.

我对oss源码了解的不深,也没看懂其用的哪种模式,最好就是能更改重写其调用方法为接口,这样就可以直接实现接口,比这样好的多.

功能实现后,又精简了JRE.算是完成了.以后有空了在研究研究看看有没有更好的方法.有更好思路或看看我写的源码的朋友可以加我QQ(378331969),可以交流一下.