我有一个 Windows 应用程序,其中包含一项功能,用户可以上传文件(通常是扫描的文档或 USB 拇指驱动器中的 PDF 文件),数据连同文件名一起存储在数据库中。该文件随后被上传到中央 (Windows) 服务器。
然而,最近发生了这样的事情,用户上传了一个名称中包含问号的文件。这给服务器带来了问题,因为文件名当然不能包含问号。
我无法联系用户本人,无法询问他们做了什么,但我不明白他们怎么会保存包含问号的文件。我们的应用程序不允许用户在将文件上传到数据库时指定文件名,它只接受存储在 Windows 文件系统中的内容。
我猜他们使用 Windows 以外的允许问号的操作系统扫描了文档,然后将其复制到 USB 驱动器上或者他们的扫描仪允许本地存储文档,并且允许他们使用。这可能吗?如果可以,Windows 在使用我们的应用程序时是否仍会在名称中看到问号?如果是前者,有哪些常见的操作系统允许使用它们?
答案1
Windows 本身(至少 NTFS 和 (Ex)Fat 文件系统)可以处理文件名中的 ? 和一些其他特殊字符,但许多 Windows 应用程序(包括文件资源管理器)可能会出现问题。
通常您仍然可以将文件重命名为更易于使用的名称,但您可能必须尝试各种方法/工具来重命名,直到找到不会因这个特定的奇怪名称而卡住的方法/工具。
Linux 和 MacOS 遇到的问题要少得多,并且很容易生成包含这些字符的文件名。