使用Java SDK实现断点续传 进度监控接口 通过实现上传过程监控接口,从而可以在上传过程中掌握您的大文件上传进度。常用的监听事件有: REQUESTCONTENTLENGTHEVENT(要在请求中发送的对象内容长度的事件) TRANSFERSTARTEDEVENT(上传开始事件) TRANSFERPARTSTARTEDEVENT(开始上传分片事件) TRANSFERPARTCOMPLETEDEVENT(分片上传完毕事件) TRANSFERCOMPLETEDEVENT(上传完毕事件) TRANSFERFAILEDEVENT(上传失败事件) TRANSFERPARTFAILEDEVENT(上传分片失败事件) 当有相应场景发生时progressChanged,则会产生相应的事件回调,即可调用您的监控代码从而掌握对象的上传进度。 以下为进度监控代码。 java ProgressListener progressListener new ProgressListener() { private long totalBytes 1; private long transferredBytes 0; private long startTime System.currentTimeMillis(); private final Object lock new Object(); // 用于线程安全更新进度 @Override public void progressChanged(ProgressEvent event) { switch (event.getEventType()) { case REQUESTCONTENTLENGTHEVENT: totalBytes event.getBytes(); System.out.printf("总大小: %,d bytes%n", totalBytes); break; case TRANSFERSTARTEDEVENT: System.out.println("[开始] 文件传输启动"); startTime System.currentTimeMillis(); break; case CLIENTREQUESTSUCCESSEVENT: System.out.printf("[秒传] 文件已存在服务端 (大小: %.2fMB)%n", event.getBytes() / 1024.0 / 1024); break; case TRANSFERPARTSTARTEDEVENT: long encodedStart event.getBytes(); int partNumber (int) (encodedStart >> 32); long partSize encodedStart & 0xFFFFFFFFL; System.out.printf("[分片] %d 开始上传 (大小: %.2fMB)%n", partNumber, partSize / 1024.0 / 1024); break; case TRANSFERPARTCOMPLETEDEVENT: long encodedComplete event.getBytes(); long actualBytes encodedComplete & 0xFFFFFFFFL; synchronized (lock) { transferredBytes + actualBytes; } printProgress(); break; case TRANSFERCOMPLETEDEVENT: System.out.println("n[完成] 所有分片上传成功"); printFinalStats(); break; case TRANSFERFAILEDEVENT: System.err.println("n[失败] 文件传输异常终止"); printFinalStats(); break; case TRANSFERPARTFAILEDEVENT: long encodedFail event.getBytes(); int failedPart (int) (encodedFail >> 32); System.err.printf("[异常] 分片