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;
}