请确认以下事项
OpenList 版本(必填)
v4.1.10
使用的存储驱动(必填)
FTP
问题描述(必填)
挂载FTP服务器后,我打开根目录,会显示当前目录内容。
但如果我此时打开子目录a,会同时显示根目录内容和a里面的内容,而且优先显示根目录内容,导致a目录显示不全,此情况会无限叠加。如果我进入了/a/b/c,最后显示的是/、/a、/a/b、/a/b/c的叠加,如果我在驱动设置里直接指定根文件夹路径为/a/b/c,则可正常显示为/a/b/c的内容。
如果改用sftp,可正常显示目录,但是sftp不支持编码修改,服务器编码采用gbk,导致文件名显示乱码。
ftp服务看返回结果只有版本号和编译时间,采用的极可能是vsftpd,版本4.2。
下方日志除/Dev外,其余都是/Dev的子目录。
如/Dev/ Amou/ USM/ MMent,其中的Amou、USM、MMent都是/Dev下的。
目录进入顺序:/Dev -> /Dev/ Amou -> /Dev/ Amou/ USM/(因为/Dev子目录太多,Web只显示了部分/Dev的子目录,无法显示全,故此无法进入/Dev/ Amou/的子目录,只能随便选一个/Dev/的子目录进入)
日志(必填)
INFO[2026-04-03 14:34:56] success load storage: [/Dev], driver: [FTP], order: [10]
[GIN] 2026/04/03 - 14:34:57 | 200 | 248.94µs | 192.168.123.63 | GET "/Dev"
[GIN] 2026/04/03 - 14:34:58 | 200 | 1.817097ms | 192.168.123.63 | GET "/api/public/settings"
[GIN] 2026/04/03 - 14:34:58 | 200 | 90.442µs | 192.168.123.63 | GET "/api/public/archive_extensions"
[GIN] 2026/04/03 - 14:34:58 | 200 | 805.536µs | 192.168.123.63 | GET "/api/me"
[GIN] 2026/04/03 - 14:35:00 | 200 | 2.09794ms | 192.168.123.63 | POST "/api/auth/login/hash"
[GIN] 2026/04/03 - 14:35:00 | 200 | 335.842µs | 192.168.123.63 | GET "/api/me"
[GIN] 2026/04/03 - 14:35:00 | 200 | 575.138µs | 192.168.123.63 | GET "/api/public/offline_download_tools"
[GIN] 2026/04/03 - 14:35:00 | 200 | 816.036µs | 192.168.123.63 | POST "/api/fs/get"
[GIN] 2026/04/03 - 14:35:00 | 200 | 8.965253ms | 192.168.123.63 | POST "/api/fs/list"
[GIN] 2026/04/03 - 14:35:04 | 200 | 10.353331ms | 192.168.123.63 | POST "/api/fs/list"
[GIN] 2026/04/03 - 14:35:04 | 200 | 133.746µs | 192.168.123.63 | GET "/Dev/ Amou/ Amou"
[GIN] 2026/04/03 - 14:35:05 | 200 | 142.789µs | 192.168.123.63 | GET "/Dev/ Amou/ Evs_BAK"
[GIN] 2026/04/03 - 14:35:39 | 200 | 123.273µs | 192.168.123.63 | GET "/Dev/ Amou/ Evs"
[GIN] 2026/04/03 - 14:35:40 | 200 | 148.732µs | 192.168.123.63 | GET "/Dev/ Amou/ GWL"
[GIN] 2026/04/03 - 14:35:41 | 200 | 149.512µs | 192.168.123.63 | GET "/Dev/ Amou/DA"
[GIN] 2026/04/03 - 14:35:41 | 200 | 154.363µs | 192.168.123.63 | GET "/Dev/ Amou/PSV"
[GIN] 2026/04/03 - 14:35:42 | 200 | 107.843µs | 192.168.123.63 | GET "/Dev/ Amou/ TEM"
[GIN] 2026/04/03 - 14:35:43 | 200 | 138.904µs | 192.168.123.63 | GET "/Dev/ Amou/ US"
[GIN] 2026/04/03 - 14:35:44 | 200 | 155.186µs | 192.168.123.63 | GET "/Dev/ Amou/ Amou"
[GIN] 2026/04/03 - 14:35:46 | 200 | 157.139µs | 192.168.123.63 | GET "/Dev/ Amou/ TRE"
[GIN] 2026/04/03 - 14:35:48 | 200 | 32.544823ms | 192.168.123.63 | POST "/api/fs/list"
[GIN] 2026/04/03 - 14:35:48 | 200 | 144.085µs | 192.168.123.63 | GET "/Dev/ Amou/ USM/ MMent"
[GIN] 2026/04/03 - 14:35:51 | 200 | 152.524µs | 192.168.123.63 | GET "/Dev/ Amou/ USM/ GC"
配置文件内容(必填)
{
"force": false,
"site_url": "",
"cdn": "",
"jwt_secret": "*******************",
"token_expires_in": 48,
"database": {
"type": "sqlite3",
"host": "",
"port": 0,
"user": "",
"password": "",
"name": "",
"db_file": "data/data.db",
"table_prefix": "x_",
"ssl_mode": "",
"dsn": ""
},
"meilisearch": {
"host": "http://localhost:7700",
"api_key": "",
"index": "openlist"
},
"scheme": {
"address": "0.0.0.0",
"http_port": 5244,
"https_port": -1,
"force_https": false,
"cert_file": "",
"key_file": "",
"unix_file": "",
"unix_file_perm": "",
"enable_h2c": false,
"enable_h3": false
},
"temp_dir": "data/temp",
"bleve_dir": "data/bleve",
"dist_dir": "",
"log": {
"enable": true,
"name": "data/log/log.log",
"max_size": 50,
"max_backups": 30,
"max_age": 28,
"compress": false,
"filter": {
"enable": false,
"filters": [
{
"cidr": "",
"path": "/ping",
"method": ""
},
{
"cidr": "",
"path": "",
"method": "HEAD"
},
{
"cidr": "",
"path": "/dav/",
"method": "PROPFIND"
}
]
}
},
"delayed_start": 0,
"max_buffer_limitMB": -1,
"mmap_thresholdMB": 4,
"max_connections": 0,
"max_concurrency": 64,
"tls_insecure_skip_verify": false,
"tasks": {
"download": {
"workers": 5,
"max_retry": 1,
"task_persistant": false
},
"transfer": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"upload": {
"workers": 5,
"max_retry": 0,
"task_persistant": false
},
"copy": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"move": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress_upload": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"allow_retry_canceled": false
},
"cors": {
"allow_origins": [
""
],
"allow_methods": [
""
],
"allow_headers": [
""
]
},
"s3": {
"enable": false,
"port": 5246,
"ssl": false
},
"ftp": {
"enable": false,
"listen": ":5221",
"find_pasv_port_attempts": 50,
"active_transfer_port_non_20": false,
"idle_timeout": 900,
"connection_timeout": 30,
"disable_active_mode": false,
"default_transfer_binary": false,
"enable_active_conn_ip_check": true,
"enable_pasv_conn_ip_check": true
},
"sftp": {
"enable": false,
"listen": ":5222"
},
"last_launched_version": "v4.1.10",
"proxy_address": ""
}
复现链接(可选)
No response
请确认以下事项
我已确认阅读并同意 AGPL-3.0 第15条 。
本程序不提供任何明示或暗示的担保,使用风险由您自行承担。
我已确认阅读并同意 AGPL-3.0 第16条 。
无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。
我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。
我已确认阅读了OpenList文档。
我已确认没有重复的问题或讨论。
我已确认是
OpenList的问题,而不是其他原因(例如 网络 ,依赖或操作)。我认为此问题必须由
OpenList处理,而非第三方。我已确认这个问题在最新版本中没有被修复。
我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue 。
OpenList 版本(必填)
v4.1.10
使用的存储驱动(必填)
FTP
问题描述(必填)
挂载FTP服务器后,我打开根目录,会显示当前目录内容。
但如果我此时打开子目录a,会同时显示根目录内容和a里面的内容,而且优先显示根目录内容,导致a目录显示不全,此情况会无限叠加。如果我进入了/a/b/c,最后显示的是/、/a、/a/b、/a/b/c的叠加,如果我在驱动设置里直接指定根文件夹路径为/a/b/c,则可正常显示为/a/b/c的内容。
如果改用sftp,可正常显示目录,但是sftp不支持编码修改,服务器编码采用gbk,导致文件名显示乱码。
ftp服务看返回结果只有版本号和编译时间,采用的极可能是vsftpd,版本4.2。
下方日志除/Dev外,其余都是/Dev的子目录。
如/Dev/ Amou/ USM/ MMent,其中的Amou、USM、MMent都是/Dev下的。
目录进入顺序:/Dev -> /Dev/ Amou -> /Dev/ Amou/ USM/(因为/Dev子目录太多,Web只显示了部分/Dev的子目录,无法显示全,故此无法进入/Dev/ Amou/的子目录,只能随便选一个/Dev/的子目录进入)
日志(必填)
INFO[2026-04-03 14:34:56] success load storage: [/Dev], driver: [FTP], order: [10]
[GIN] 2026/04/03 - 14:34:57 | 200 | 248.94µs | 192.168.123.63 | GET "/Dev"
[GIN] 2026/04/03 - 14:34:58 | 200 | 1.817097ms | 192.168.123.63 | GET "/api/public/settings"
[GIN] 2026/04/03 - 14:34:58 | 200 | 90.442µs | 192.168.123.63 | GET "/api/public/archive_extensions"
[GIN] 2026/04/03 - 14:34:58 | 200 | 805.536µs | 192.168.123.63 | GET "/api/me"
[GIN] 2026/04/03 - 14:35:00 | 200 | 2.09794ms | 192.168.123.63 | POST "/api/auth/login/hash"
[GIN] 2026/04/03 - 14:35:00 | 200 | 335.842µs | 192.168.123.63 | GET "/api/me"
[GIN] 2026/04/03 - 14:35:00 | 200 | 575.138µs | 192.168.123.63 | GET "/api/public/offline_download_tools"
[GIN] 2026/04/03 - 14:35:00 | 200 | 816.036µs | 192.168.123.63 | POST "/api/fs/get"
[GIN] 2026/04/03 - 14:35:00 | 200 | 8.965253ms | 192.168.123.63 | POST "/api/fs/list"
[GIN] 2026/04/03 - 14:35:04 | 200 | 10.353331ms | 192.168.123.63 | POST "/api/fs/list"
[GIN] 2026/04/03 - 14:35:04 | 200 | 133.746µs | 192.168.123.63 | GET "/Dev/ Amou/ Amou"
[GIN] 2026/04/03 - 14:35:05 | 200 | 142.789µs | 192.168.123.63 | GET "/Dev/ Amou/ Evs_BAK"
[GIN] 2026/04/03 - 14:35:39 | 200 | 123.273µs | 192.168.123.63 | GET "/Dev/ Amou/ Evs"
[GIN] 2026/04/03 - 14:35:40 | 200 | 148.732µs | 192.168.123.63 | GET "/Dev/ Amou/ GWL"
[GIN] 2026/04/03 - 14:35:41 | 200 | 149.512µs | 192.168.123.63 | GET "/Dev/ Amou/DA"
[GIN] 2026/04/03 - 14:35:41 | 200 | 154.363µs | 192.168.123.63 | GET "/Dev/ Amou/PSV"
[GIN] 2026/04/03 - 14:35:42 | 200 | 107.843µs | 192.168.123.63 | GET "/Dev/ Amou/ TEM"
[GIN] 2026/04/03 - 14:35:43 | 200 | 138.904µs | 192.168.123.63 | GET "/Dev/ Amou/ US"
[GIN] 2026/04/03 - 14:35:44 | 200 | 155.186µs | 192.168.123.63 | GET "/Dev/ Amou/ Amou"
[GIN] 2026/04/03 - 14:35:46 | 200 | 157.139µs | 192.168.123.63 | GET "/Dev/ Amou/ TRE"
[GIN] 2026/04/03 - 14:35:48 | 200 | 32.544823ms | 192.168.123.63 | POST "/api/fs/list"
[GIN] 2026/04/03 - 14:35:48 | 200 | 144.085µs | 192.168.123.63 | GET "/Dev/ Amou/ USM/ MMent"
[GIN] 2026/04/03 - 14:35:51 | 200 | 152.524µs | 192.168.123.63 | GET "/Dev/ Amou/ USM/ GC"
配置文件内容(必填)
{
"force": false,
"site_url": "",
"cdn": "",
"jwt_secret": "*******************",
"token_expires_in": 48,
"database": {
"type": "sqlite3",
"host": "",
"port": 0,
"user": "",
"password": "",
"name": "",
"db_file": "data/data.db",
"table_prefix": "x_",
"ssl_mode": "",
"dsn": ""
},
"meilisearch": {
"host": "http://localhost:7700",
"api_key": "",
"index": "openlist"
},
"scheme": {
"address": "0.0.0.0",
"http_port": 5244,
"https_port": -1,
"force_https": false,
"cert_file": "",
"key_file": "",
"unix_file": "",
"unix_file_perm": "",
"enable_h2c": false,
"enable_h3": false
},
"temp_dir": "data/temp",
"bleve_dir": "data/bleve",
"dist_dir": "",
"log": {
"enable": true,
"name": "data/log/log.log",
"max_size": 50,
"max_backups": 30,
"max_age": 28,
"compress": false,
"filter": {
"enable": false,
"filters": [
{
"cidr": "",
"path": "/ping",
"method": ""
},
{
"cidr": "",
"path": "",
"method": "HEAD"
},
{
"cidr": "",
"path": "/dav/",
"method": "PROPFIND"
}
]
}
},
"delayed_start": 0,
"max_buffer_limitMB": -1,
"mmap_thresholdMB": 4,
"max_connections": 0,
"max_concurrency": 64,
"tls_insecure_skip_verify": false,
"tasks": {
"download": {
"workers": 5,
"max_retry": 1,
"task_persistant": false
},
"transfer": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"upload": {
"workers": 5,
"max_retry": 0,
"task_persistant": false
},
"copy": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"move": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress_upload": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"allow_retry_canceled": false
},
"cors": {
"allow_origins": [
""
],
"allow_methods": [
""
],
"allow_headers": [
""
]
},
"s3": {
"enable": false,
"port": 5246,
"ssl": false
},
"ftp": {
"enable": false,
"listen": ":5221",
"find_pasv_port_attempts": 50,
"active_transfer_port_non_20": false,
"idle_timeout": 900,
"connection_timeout": 30,
"disable_active_mode": false,
"default_transfer_binary": false,
"enable_active_conn_ip_check": true,
"enable_pasv_conn_ip_check": true
},
"sftp": {
"enable": false,
"listen": ":5222"
},
"last_launched_version": "v4.1.10",
"proxy_address": ""
}
复现链接(可选)
No response