卐槑卍
- 卐槑卍 2019-02-13 已签到连续签到1天,获得了5个金钱
- 卐槑卍 2019-02-10 已签到连续签到3天,获得了15个金钱
- 卐槑卍 2019-02-09 已签到连续签到2天,获得了10个金钱
- 卐槑卍 2019-02-08 已签到连续签到1天,获得了5个金钱
- 卐槑卍 回答了问题 求助一个关于表单的问题
这个问题,困扰我好久了,借着过年,用了两天好好研究了一下,终于搞明白了。
以下是我研究过程中写的备忘录,写作水平太水,你可以借鉴一下。
???上传文件时,调用saveAs()方法,传入的路径中,使用$model->photo->name,报错failed to open stream。
经过研究发现:文件名为中文,改成英文或数字都正常上传。待研究处理。
经过一天研究:此问题原因为编码引发的“血案”,windows默认编码为GBK(查看方法:开始->cmd->chcp,然后显示一个数字:如936,则代表是GBK简体中文),Linux 系统本身就是使用 UTF-8 来编码的,yii2.0编码格式为utf-8。
在上传文件后,一般都会用 move_uploaded_file() 进行文件移动改名。但是 move_uploaded_file() 并不支持 UTF-8 编码,如果含有,那么函数就会执行失败,但是这个函数是支持 GB2312 或者是 GBK 编码的,在调用move_uploaded_file()方法前,通过mb_convert_encoding ( string $str , string 转换后,string 转换前),在存入数据库时,使用此函数转化为utf-8保存。