diff --git a/src/main/java/im/zhaojun/zfile/module/storage/service/base/AbstractMicrosoftDriveService.java b/src/main/java/im/zhaojun/zfile/module/storage/service/base/AbstractMicrosoftDriveService.java index 4513fee..9e0f314 100644 --- a/src/main/java/im/zhaojun/zfile/module/storage/service/base/AbstractMicrosoftDriveService.java +++ b/src/main/java/im/zhaojun/zfile/module/storage/service/base/AbstractMicrosoftDriveService.java @@ -182,7 +182,8 @@ public abstract class AbstractMicrosoftDriveService

extends A */ public List s3FileList(String path) { String bucketName = param.getBucketName(); - path = StringUtils.trimStartSlashes(path); String fullPath = StringUtils.concatTrimStartSlashes(param.getBasePath(), getCurrentUserBasePath(), path, StringUtils.SLASH); List fileItemList = new ArrayList<>(); diff --git a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/GoogleDriveServiceImpl.java b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/GoogleDriveServiceImpl.java index 2fe5637..565c1e4 100644 --- a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/GoogleDriveServiceImpl.java +++ b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/GoogleDriveServiceImpl.java @@ -116,8 +116,8 @@ public class GoogleDriveServiceImpl extends AbstractProxyTransferService downloadToStream(String pathAndName) { - String fileId = getIdByPath(pathAndName); + String fileId = getIdByPath(pathAndName, false); HttpServletRequest request = RequestHolder.getRequest(); diff --git a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/SftpServiceImpl.java b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/SftpServiceImpl.java index 79877a0..15a625b 100644 --- a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/SftpServiceImpl.java +++ b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/SftpServiceImpl.java @@ -95,9 +95,8 @@ public class SftpServiceImpl extends AbstractProxyTransferService { } - @Override - public FileItemResult getFileItem(String pathAndName) { - String fullPath = StringUtils.concat(param.getBasePath(), getCurrentUserBasePath(), pathAndName); + public FileItemResult getFileItem(String pathAndName, boolean containUserBasePath) { + String fullPath = StringUtils.concat(param.getBasePath(), containUserBasePath ? getCurrentUserBasePath() : "", pathAndName); Sftp sftp = null; try { @@ -121,6 +120,10 @@ public class SftpServiceImpl extends AbstractProxyTransferService { } } + @Override + public FileItemResult getFileItem(String pathAndName) { + return getFileItem(pathAndName, true); + } @Override public boolean newFolder(String path, String name) { @@ -230,7 +233,7 @@ public class SftpServiceImpl extends AbstractProxyTransferService { throw new BizException(ErrorCode.BIZ_UNSUPPORTED_PROXY_DOWNLOAD); } - FileItemResult fileItem = getFileItem(pathAndName); + FileItemResult fileItem = getFileItem(pathAndName, false); if (fileItem == null) { throw new NotFoundAccessException(ErrorCode.BIZ_FILE_NOT_EXIST); } diff --git a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/UpYunServiceImpl.java b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/UpYunServiceImpl.java index 069b933..2c641b5 100644 --- a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/UpYunServiceImpl.java +++ b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/UpYunServiceImpl.java @@ -336,7 +336,7 @@ public class UpYunServiceImpl extends AbstractProxyTransferService { @Override public ResponseEntity downloadToStream(String pathAndName) throws Exception { - String fullUrl = StringUtils.concat(param.getBasePath(),getCurrentUserBasePath(), pathAndName); + String fullUrl = StringUtils.concat(param.getBasePath(), pathAndName); Response response = restManager.readFile(fullUrl); InputStream inputStream = response.body().byteStream(); String fileName = FileUtils.getName(pathAndName); diff --git a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/WebdavServiceImpl.java b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/WebdavServiceImpl.java index 8fa4369..85a3a2e 100644 --- a/src/main/java/im/zhaojun/zfile/module/storage/service/impl/WebdavServiceImpl.java +++ b/src/main/java/im/zhaojun/zfile/module/storage/service/impl/WebdavServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.URLUtil; import com.github.sardine.DavResource; import com.github.sardine.Sardine; import com.github.sardine.impl.SardineException; +import com.github.sardine.impl.io.ContentLengthInputStream; import im.zhaojun.zfile.core.util.CollectionUtils; import im.zhaojun.zfile.core.util.FileUtils; import im.zhaojun.zfile.core.util.RequestHolder; @@ -92,8 +93,12 @@ public class WebdavServiceImpl extends AbstractProxyTransferService @Override public FileItemResult getFileItem(String pathAndName) { + return getFileItem(pathAndName, true); + } + + public FileItemResult getFileItem(String pathAndName, boolean containUserBasePath) { try { - String requestUrl = getRequestPath(pathAndName); + String requestUrl = getRequestPath(containUserBasePath, pathAndName); List resources = sardine.list(requestUrl); DavResource davResource = CollectionUtils.getLast(resources); if (davResource == null) { @@ -160,9 +165,9 @@ public class WebdavServiceImpl extends AbstractProxyTransferService @Override public ResponseEntity downloadToStream(String pathAndName) throws IOException { - FileItemResult fileItem = getFileItem(pathAndName); - InputStream inputStream = sardine.get(getRequestPath(false, pathAndName)); - RequestHolder.writeFile(inputStream, fileItem.getName(), fileItem.getSize(), false, param.isProxyLinkForceDownload()); + ContentLengthInputStream inputStream = (ContentLengthInputStream) sardine.get(getRequestPath(false, pathAndName)); + String fileName = FileUtils.getName(pathAndName); + RequestHolder.writeFile(inputStream, fileName, inputStream.getLength(), false, param.isProxyLinkForceDownload()); return null; }