Url 是否允许在(文件-)Web服务器上使用UTF-8编码的文件名?

Url 是否允许在(文件-)Web服务器上使用UTF-8编码的文件名?,url,encoding,utf-8,download,cp1252,Url,Encoding,Utf 8,Download,Cp1252,我正在托管一个小型文件服务器,用户可以在其中上载来自世界各地的文档 由于编码方面的问题(请参阅),我问自己是否应该禁止用户上传(另一方面下载)CP1252字符集不支持的文件 或以其他方式;允许用户上传文件名中包含阿拉伯或中文字母的文档是否明智 PS:他们稍后会下载相同的文件(文件名应该与上载的文件名相同)您应该使用随机生成的名称将文件存储在磁盘上,或者让文件名基于文件内容的散列(同样适用于重复数据消除存储)。您可以将原始文件名作为元数据保存在数据库中,同时保存有关该文件的所有其他元数据(谁上传了

我正在托管一个小型文件服务器,用户可以在其中上载来自世界各地的文档

由于编码方面的问题(请参阅),我问自己是否应该禁止用户上传(另一方面下载)CP1252字符集不支持的文件

或以其他方式;允许用户上传文件名中包含阿拉伯或中文字母的文档是否明智


PS:他们稍后会下载相同的文件(文件名应该与上载的文件名相同)

您应该使用随机生成的名称将文件存储在磁盘上,或者让文件名基于文件内容的散列(同样适用于重复数据消除存储)。您可以将原始文件名作为元数据保存在数据库中,同时保存有关该文件的所有其他元数据(谁上传了该文件等)。然后使用PHP脚本再次提供该文件,该脚本在HTTP头中设置数据库中的原始文件名。这样你就:

  • 不需要担心文件名的删除或复制
  • 文件系统编码问题
  • 存储复制(如果使用哈希)

感谢这些提示,有一件事必须起作用:通过链接直接访问模具文件。因此,如果用户获得文件的url,php每次都会连接到db?当他有10个文件要打开时,这不会花费太多时间吗?你有一个现成的php脚本吗?如果做得得体,数据库访问在这里绝不应该是一个限制因素。看见还要看看你是否想要漂亮的链接。也可以参见.hmmm;你有这方面的参考脚本吗?