无法正确处理文件名中含有Windows保留字符的文件
Please make sure of the following things
- [X] I have read the documentation.
- [X] I'm sure there are no duplicate issues or discussions.
- [X] I'm sure it's due to
alistand not something else(such asDependenciesorOperational). - [X] I'm sure I'm using the latest version
Alist Version / Alist 版本
v3.9.2
Driver used / 使用的存储驱动
本机存储,百度网盘
Describe the bug / 问题描述
我的alist是运行在Windows上的,Windows中又有一些保留字符,如 \, :,<,这些字符无法用于文件名中。但安卓系统不受此限制,以上列举的三个字符是可以用于命名文件的。我试图将包含此类字符的文件上传至alist挂载的本机存储A中,发现了不符合预期的行为。
将文件名中包含反斜杠的文件上传至A,发现alist将文件按带路径的文件处理了,并根据文件名中的“路径”创建了子文件夹。文件内容没有受到影响。
将文件名中包含半角冒号的文件上传至A,发现alist创建了一个空文件,其文件名是原文件名中冒号之前的部分。原文件不知道哪去了。
将文件名中包含左尖括号的文件上传至A,发现alist会直接报错上传失败。其他Windows保留字符的测试结果也是直接报错。
后面又试了试上传到百度网盘,发现反斜杠仍然会导致创建文件夹,但半角冒号不会导致创建空文件,而是上传失败。不知道其他存储会不会有类似问题。
由于尖括号确实不能在Windows上作为文件名,所以我觉得这种情况下报错也具有其合理性,但反斜杠和半角冒号的情况就不太对了。如果能够统一成报错拒绝上传,我觉得也能接受。理想一点的话,希望能够有个选项,允许程序在保存文件前,先用指定的字符替换掉文件名中的那些Windows保留字符。
Reproduction / 复现链接
一段录屏,展示了bug的触发过程https://pan.baidu.com/s/1wtmRomXRMRsyI0scYqlUzw?pwd=2333 或者 自己搭建的alist,仅ipv6
Logs / 日志
No response
Thanks for opening your first issue here! Be sure to follow the issue template!
这应该不能算是bug,毕竟输出只对输入负责 至于半角冒号,其实文件已经创建了的,因为windows允许这样创建 https://learn.microsoft.com/en-us/windows/win32/fileio/file-streams 不过考虑到这种情况的确不应该由用户触发,之后会对该存储驱动文件名进行判断
发现了同类问题:通过webdav无法访问文件名中带“问号”的文件,复制或者打开都会导致该文件在文件夹中消失,重新刷新又出现,但通过网页可以下载,"问号"被更改为"下划线",希望可以修复webdav端,将保留字符自动更改为"下划线",对了webdav用的是RaiDrive
@yguangg 你需要的是文件名字符映射,去设置->全局里找
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue was closed due to inactive more than 52 days. You can reopen or recreate it if you think it should continue. Thank you for your contributions again.
alist版本是 v3.18.0,使用 rclone 连接 webdav 上传文件时发现文件名里面有中文冒号 : 就会405错误。