需修改文件先下载问题和Apk下载问题
This commit is contained in:
parent
21cd70dd4f
commit
2cc11f5e67
@ -167,7 +167,7 @@ public class AppVersionServiceImpl extends DefaultBaseService implements IAppVer
|
|||||||
Map<String, Object> params = getHashMap(4);
|
Map<String, Object> params = getHashMap(4);
|
||||||
params.put("fileId", appVersionPO.getAppFile());
|
params.put("fileId", appVersionPO.getAppFile());
|
||||||
params.put("isOpen", false);
|
params.put("isOpen", false);
|
||||||
boolean isDownloadComplete = fileService.downLoadFile(request, response, params, false);
|
boolean isDownloadComplete = fileService.downLoadFile(request, response, params, true);
|
||||||
if(isDownloadComplete) {
|
if(isDownloadComplete) {
|
||||||
LOG.debug("更新下载次数");
|
LOG.debug("更新下载次数");
|
||||||
appVersionDao.updateDownloadCount(appVersionPO.getAppVersionId());
|
appVersionDao.updateDownloadCount(appVersionPO.getAppVersionId());
|
||||||
|
@ -178,8 +178,6 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi
|
|||||||
if (!isOpen) {
|
if (!isOpen) {
|
||||||
// 下载
|
// 下载
|
||||||
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(filePO.getFileName(), "UTF-8"));
|
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(filePO.getFileName(), "UTF-8"));
|
||||||
GetObjectArgs getObjectArgs = GetObjectArgs.builder().bucket(filePO.getFileUrl()).object(objectName).build();
|
|
||||||
inputStream = minioClient.getObject(getObjectArgs);
|
|
||||||
} else {
|
} else {
|
||||||
// 直接打开
|
// 直接打开
|
||||||
response.setHeader("Content-Disposition", "inline;fileName=" + URLEncoder.encode(filePO.getFileName(), "UTF-8"));
|
response.setHeader("Content-Disposition", "inline;fileName=" + URLEncoder.encode(filePO.getFileName(), "UTF-8"));
|
||||||
@ -197,37 +195,37 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi
|
|||||||
response.setHeader("max-age", "3600");
|
response.setHeader("max-age", "3600");
|
||||||
response.setHeader("Last-Modified", filePO.getGmtModified());
|
response.setHeader("Last-Modified", filePO.getGmtModified());
|
||||||
}
|
}
|
||||||
String rangeString = null;
|
}
|
||||||
if (canRange && request != null) {
|
String rangeString = null;
|
||||||
rangeString = request.getHeader("Range");
|
if (canRange && request != null) {
|
||||||
LOG.debug("range: {}", rangeString);
|
rangeString = request.getHeader("Range");
|
||||||
|
LOG.debug("range: {}", rangeString);
|
||||||
|
}
|
||||||
|
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]);
|
||||||
}
|
}
|
||||||
long contentLength = Long.valueOf(filePO.getFileSize());
|
setRangeHeader(startRange, endRange, response, filePO.getFileId(), contentLength);
|
||||||
long startRange = 0;
|
long rangeLength = endRange - startRange + 1;
|
||||||
long endRange = contentLength - 1;
|
if (rangeLength <= 0) {
|
||||||
LOG.debug("1.startRange: {}, endRange: {}", startRange, endRange);
|
// 标记为已完成
|
||||||
if (!StringUtils.isBlank(rangeString)) {
|
return true;
|
||||||
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);
|
|
||||||
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) {
|
|
||||||
isDownloadComplete = true;
|
|
||||||
}
|
}
|
||||||
|
LOG.debug("rangeLength: {}", rangeLength);
|
||||||
|
inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(filePO.getFileUrl()).object(objectName).offset(startRange).length(rangeLength).build());
|
||||||
|
} else {
|
||||||
|
inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(filePO.getFileUrl()).object(objectName).offset(0L).length(contentLength).build());
|
||||||
|
}
|
||||||
|
if (endRange == contentLength) {
|
||||||
|
isDownloadComplete = true;
|
||||||
}
|
}
|
||||||
byte[] readBuf = new byte[IFileService.INPUT_STREAM_SIZE];
|
byte[] readBuf = new byte[IFileService.INPUT_STREAM_SIZE];
|
||||||
for (int length = 0; (length = inputStream.read(readBuf)) > 0; ) {
|
for (int length = 0; (length = inputStream.read(readBuf)) > 0; ) {
|
||||||
@ -235,7 +233,8 @@ public class MinIoFileServiceImpl extends DefaultBaseService implements IMinIoFi
|
|||||||
}
|
}
|
||||||
outputStream.flush();
|
outputStream.flush();
|
||||||
inputStream.close();
|
inputStream.close();
|
||||||
} catch (ServerException | IOException | ErrorResponseException | InsufficientDataException | InternalException | InvalidKeyException | InvalidResponseException | NoSuchAlgorithmException | XmlParserException e) {
|
} catch (ServerException | IOException | ErrorResponseException | InsufficientDataException | InternalException | InvalidKeyException | InvalidResponseException | NoSuchAlgorithmException |
|
||||||
|
XmlParserException e) {
|
||||||
throw new FileException("文件输出异常", e);
|
throw new FileException("文件输出异常", e);
|
||||||
} finally {
|
} finally {
|
||||||
if (inputStream != null) {
|
if (inputStream != null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user