0

我们有一台带有 Apache 网络服务器的 CentOS 6 机器,它接受来自富 Javascript 客户端的文件上传。文件用php保存move_uploaded_file

客户端和服务器 (php) 文件都以 iso-8859-1 编码,服务器上的数据库也是如此。此外,html 输出将 iso-8859-1 声明为字符集。

到目前为止,文件上传工作正常,除了带有元音变音(或其他未知特殊字符)的文件会导致错误。例如,文件1.Nachtrag Gemeinde Höchst.pdf在应用程序中得到正确回显,并且为下载文件而生成的链接具有正确的(url-)编码:

http://ourdomain/saba/data/dok/00000092/1.Nachtrag%20Gemeinde%20H%C3%B6chst.pdf

但是当点击这个链接时,会出现 404 错误。在 shell 中查找文件时,它显示为1.Nachtrag Gemeinde H?chst.pdf,这表示某种错误的编码,尽管这可能只是因为 shell 具有 utf-8 编码。

我们忘记了什么?

4

1 回答 1

0

正如@Amadan 正确指出的那样,在保存之前需要将文件名转换为 utf-8,即:

 $filename = iconv('ISO-8859-1', 'UTF-8', $filename);
 $is_successful = @move_uploaded_file($tmp_filename, $ordnername . DIRECTORY_SEPARATOR . $filename);
于 2012-12-10T08:58:12.533 回答