2011-05-04 78 views
0

我有学习门户(LMS),我将上传文档,图像,视频等来创建内容。如果上传的文件有中文名称,则不会上传。而是上传垃圾名称的损坏文件。如何在PHP中上传带有中文名称的文件?

例如,我试图上传一个名为的文件,地球科学.jpg。但在服务器上,我将此文件作为发送给我。上传的文件也在服务器中损坏。

我想让这个文件在服务器上获取同名的上传文件。 因为我想搜索这些文件并稍后重新用于创建内容。

仅供参考: 我在Windows XP上安装了XAMPP服务器。 已安装中文,韩文和日文语言包。

感谢您的回答。

+0

您知道如何在服务器上创建此文件吗?你的PHP代码在哪里? – 2011-05-04 07:43:53

+0

我可以确认它不是你的操作系统。我安装了相同的操作系统和CJK。这可能是你的PHP脚本/环境。 – 2011-05-04 09:01:37

回答

3

AFAIK ntfs无法处理文件系统上的某些字符。我会建议以通用名称存储文件。

例如,您可以创建一个包含两列的表:名称和文件,作为保存原始名称的名称,以及设置类似md5(名称)的文件。

+1

你试过了吗?我刚刚做了,它的工作。地球科学.jpg是一个非常有效的NTFS文件名。 – 2011-05-04 07:43:04

+0

我目前不是赢家用户。但是你能否确认它的跨平台兼容性?可能不会。与客户相同的问题是,将一个名为'--foobar.jpg'的文件上传到Linux环境(曾尝试删除这样的文件?)) – Flask 2011-05-04 07:48:10

+0

与什么平台兼容?我在WindowsXP x86上运行它。我不知道WindowsXP运行在哪个平台上。我猜测安腾有Windows? – 2011-05-04 08:58:52

0

确保显示表单的页面以utf-8或更高版本呈现,通常这是作业,您还可以选择使用表单元素的accept-charset属性来指示发布的数据作为指定的字符集发送。

不知道是否这一切都会做的工作,让我知道。

+0

我改变了utf-8中的所有页面,但没有成功 – Pallava 2012-11-28 09:23:02

1

如果您需要名称来搜索它,请使用数据库来存储名称信息和文件位置,并使用您自己的约定来保存该文件。

// sql entry 
original name = 地球科学.jpg 
path = /some/place/1.jpg 

当您搜索使用分贝找到一个给定的文件名称和位置。当构建图像存储解决方案时,分离存储逻辑不仅仅是命名问题,而且还涉及在文件夹中积累的文件数量方面的限制/考虑因素。

0

我想你可能想使用一些数据库解决方案,特别是当你以后需要搜索文件时。有了数据库,您可以避免I/O开销。

0

我想你必须先学习/理解文件中的字符集,然后才能确定如何处理上传。恐怕我不太熟悉非欧洲字符集,也不知道哪些字符使用最广泛。

UTF-8应该是一个安全的选择,可以处理几乎所有你想要抛弃的东西。有一些相关信息对于我最近在博客中撰写的帖子配置应用程序很有帮助:How to Avoid Character Encoding Problems in PHP