php的move_uploaded_file上传中文文件有时会失败 5
这个系统是一个文件管理系统,用apache+php+mysql,编码全部统一用utf8。部署的服务器是windowsserver2003。上传的目录中也有中文。普通的中文...
这个系统是一个文件管理系统,用apache+php+mysql,编码全部统一用utf8。部署的服务器是windows server 2003。上传的目录中也有中文。普通的中文目录、中文文件的操作(上传和下载)都没问题(虽然在服务器上看到都是乱码,但下载下来都正常)。但是,有些中文目录或者中文文件名的操作会失败,就是move_uploaded_file上传失败。如果move_uploaded_file中增加iconv(转utf8为gbk),就可以成功。但我不想这样改,因为改的地方太多了(目录和文件名都会保留到mysql中)。有什么改动最小的好办法吗?
展开
4个回答
展开全部
move_uploaded_file上传文件出错方式有很多,比如文件过大,比如上传文件夹无写权限,比如文件格式限制,你使用print_r(FILE)把上传文件的所有信息打印出来看看。看看错过码,找到错误就能定位!
追问
move_uploaded_file上传失败,只是返回false,没法知道错误原因吧。print_r打印的上传的完整路径(utf8)都没问题,只是有目录或文件名为中文而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
温馨建议:做网页,最好不要使用中文路径
也许开发的时候好记,但后续的麻烦,远远超出当初的偷懒带来的快乐。。。。
也许开发的时候好记,但后续的麻烦,远远超出当初的偷懒带来的快乐。。。。
追问
可以不用中文路径,但中文文件名无法避免
追答
那怕用拼音也好啊
中文对于网页来说,每种编码下的中文字节是不同的,而英文和数字不会
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-15
展开全部
utf8 环境下,中文路径是忽悠出错的,
简单的改法就是改掉中文目录名。
简单的改法就是改掉中文目录名。
追问
中文目录名可以改为英文,但中文文件名必须要支持,上传的部分中文文件名的文件还是会失败,如何解决这个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
百度是个坑,做任务时看不见楼猪的提问内容,只看见标题。
只好再补充:
楼猪提供给move_file~函数的参数,决定php寻文件,因此移动时一定要保持编码一致。
所以你这没什么好方法,而且上传文件如果重名也不好办,最好是产生时间戳做文件名,然后在数据库里对应。
更多文件系统的编码问题,请参看
http://www.baidu.com/s?wd=NTFS%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%BC%96%E7%A0%81&tn=87048150_dg&ie=utf8
只好再补充:
楼猪提供给move_file~函数的参数,决定php寻文件,因此移动时一定要保持编码一致。
所以你这没什么好方法,而且上传文件如果重名也不好办,最好是产生时间戳做文件名,然后在数据库里对应。
更多文件系统的编码问题,请参看
http://www.baidu.com/s?wd=NTFS%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9A%84%E7%BC%96%E7%A0%81&tn=87048150_dg&ie=utf8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询