我有学习门户(LMS),我将上传文档,图像,视频等来创建内容。如果上传的文件有中文名称,则不会上传。而是上传具有垃圾名称的损坏文件。
例如,我尝试上传名为地球科学.jpg 的文件。但是在服务器上我得到了这个文件地çƒç§'å| .jpg 。此外,上传的文件在服务器中也已损坏。
我希望这个文件在服务器上以相同的名称上传。 因为我想搜索这些文件并在以后重复用于创建内容。
供参考: 我在Windows XP上安装了XAMPP服务器。 安装了中文,韩文和日文语言包。
感谢您的回答。
答案 0 :(得分:3)
AFAIK ntfs无法处理文件系统上的某些字符。我建议用通用名称存储文件。
例如,您可以创建一个包含两列的表:name和file,保存原始名称的名称,以及设置类似md5(name)的文件。答案 1 :(得分:1)
如果您需要搜索名称,请使用数据库存储名称信息和文件位置,并使用您自己的约定保存文件。
示例
// sql entry
original name = 地球科学.jpg
path = /some/place/1.jpg
搜索时,使用数据库查找给定的文件名和位置。在构建图像存储解决方案时,分离存储逻辑是常见的,不仅用于命名问题,还包括在文件夹中累积的文件数量方面的限制/ spped注意事项。
答案 2 :(得分:1)
使用iconv
或mb_convert_encoding
更改字符串编码。
// Upload the file into the temp dir
$target_path = "uploadfiles/";
$target_path .= $_FILES['fileField']['name'];
// iconv()
move_uploaded_file($_FILES['fileField']['tmp_name'], iconv("UTF-8", "big5", $target_path))
// mb_convert_encoding()
move_uploaded_file($_FILES['fileField']['tmp_name'], mb_convert_encoding($target_path, "big5", "UTF-8"))
答案 3 :(得分:0)
确保显示表单的页面以utf-8或更高版本呈现,通常这样做,您还可以选择使用表单元素的accept-charset
属性来指示发布的数据作为指定的字符集。
不确定这一切是否能完成这项工作,请告诉我。
答案 4 :(得分:0)
我认为你可能想要使用某种数据库解决方案,特别是当你以后需要搜索文件时。使用数据库可以避免I / O开销。
答案 5 :(得分:0)
我认为在你弄清楚如何处理上传之前,你必须学习/理解文件的字符集。我担心我对非欧洲字符集并不太熟悉,也不知道哪种字符集使用最广泛。
UTF-8应该是一个安全的赌注,几乎可以处理任何你想要投入的东西。在我最近在我的博客上写的帖子中,有一些相关的信息可用于配置您的应用程序:How to Avoid Character Encoding Problems in PHP