diff --git a/app/modules/filemanager/storages/rclone.py b/app/modules/filemanager/storages/rclone.py index 642b983d..e54191b1 100644 --- a/app/modules/filemanager/storages/rclone.py +++ b/app/modules/filemanager/storages/rclone.py @@ -206,8 +206,27 @@ class Rclone(StorageBase): startupinfo=self.__get_hidden_shell() ) if ret.returncode == 0: - items = json.loads(ret.stdout) - return self.__get_rcloneitem(items[0]) + # 判断是否是文件 + if str(path.name) in str(ret.stdout.decode('utf-8')): + items = json.loads(ret.stdout) + return self.__get_rcloneitem(items[0], parent=str(path.parent) + "/") + + ret = subprocess.run( + [ + 'rclone', 'lsjson', + f'MP:{path.parent}' + ], + capture_output=True, + startupinfo=self.__get_hidden_shell() + ) + if ret.returncode == 0: + # 判断是否是目录 + if str(path.name) in str(ret.stdout.decode('utf-8')): + items = json.loads(ret.stdout) + for item in items: + if item.get("Path") == path.name: + return self.__get_rcloneitem(item, parent=str(path.parent) + "/") + return None except Exception as err: logger.error(f"rclone获取文件失败:{err}") return None