From be2bf9463cc719945beaccc19801d17c2ccd2bde Mon Sep 17 00:00:00 2001 From: WenG <450292408@qq.com> Date: Wed, 2 Mar 2022 11:04:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E6=96=AD=E7=82=B9=E7=BB=AD=E4=BC=A0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/service/impl/MinIoFileServiceImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/module-file/src/main/java/ink/wgink/module/file/service/impl/MinIoFileServiceImpl.java b/module-file/src/main/java/ink/wgink/module/file/service/impl/MinIoFileServiceImpl.java index 0f44fe46..dff9ef50 100644 --- a/module-file/src/main/java/ink/wgink/module/file/service/impl/MinIoFileServiceImpl.java +++ b/module-file/src/main/java/ink/wgink/module/file/service/impl/MinIoFileServiceImpl.java @@ -205,19 +205,27 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi long contentLength = Long.valueOf(filePO.getFileSize()); long startRange = 0; long endRange = contentLength - 1; + LOG.debug("1.startRange: {}, endRange: {}", startRange, endRange); if (!StringUtils.isBlank(rangeString)) { response.setContentType("multipart/byteranges"); String[] rangeArray = rangeString.substring(rangeString.indexOf("=") + 1).split("-"); startRange = Long.valueOf(rangeArray[0]); if (rangeArray.length > 1) { + LOG.debug("2.startRange: {}, endRange: {}", startRange, endRange); endRange = Long.valueOf(rangeArray[1]); } setRangeHeader(startRange, endRange, response, filePO.getFileId(), contentLength); - inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(filePO.getFileUrl()).object(objectName).offset(startRange).length(endRange - startRange).build()); + long rangeLength = endRange - startRange + 1; + if (rangeLength <= 0) { + // 标记为已完成 + return true; + } + LOG.debug("rangeLength: {}", rangeLength); + inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(filePO.getFileUrl()).object(objectName).offset(startRange).length(rangeLength + 1).build()); } else { inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(filePO.getFileUrl()).object(objectName).build()); } - if (endRange == contentLength - 1) { + if (endRange == contentLength) { isDownloadComplete = true; } }