用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4200|回复: 9
收起左侧

求助CI的上传类出错,不知道怎么弄了

[复制链接]
发表于 2012-4-19 11:07:26 | 显示全部楼层 |阅读模式
本帖最后由 fute598 于 2012-4-19 11:22 编辑

想用CI做个网盘,给用户保存文档,每次上传一个文件

上传图片文件没有问题,正常,很顺利

当我试着上传word文档的时候,就老报错:

"尝试移动文件到目标文件夹时出错"

本人分析应该不是权限的原因,因为上传图片文件没有事呀?求指点,谢谢。


public function uploaddiskfile(){
            $folder = date('Ymd');
            $date_folder = $_SERVER['DOCUMENT_ROOT'].'/disk/download/'.$folder.'/';
            if( !is_dir($date_folder) )    mkdir($date_folder);
            $config['upload_path']   = $date_folder;
            $config['allowed_types'] = 'rmvb|rm|avi|3gp|mp4|doc|docx|html|php|asp|aspx|xml|exe|gif|jpg|png|bmp|txt|pdf|xlsx|ppt';
            $config['max_size']      = 10*1024*1024;
            $config['remove_spaces'] = TRUE;
            $this->load->library('upload', $config);
            if( !$this->upload->do_upload() ){
                $back = array('state'=>'', 'msg'=>'上传错误:'.$this->upload->display_errors('', ''));
            }else{
                $fileInfo = $this->upload->data();
                $back = $fileInfo;
            }
            echo json_encode($back);
    }
 楼主| 发表于 2012-4-19 11:23:48 | 显示全部楼层
附上代码,求高人指点,谢谢
发表于 2012-4-19 11:42:28 | 显示全部楼层
把错误信息贴一下吧,原始错误信息。
 楼主| 发表于 2012-4-19 11:47:58 | 显示全部楼层
Hex您好,最原始的错误就是"<p>尝试移动文件到目标文件夹时出错</p>"

我只不过把<p>标签去掉了
发表于 2012-4-19 12:11:30 | 显示全部楼层
从错误提示只能看出来,你的文件无法移动到你的目标目录,可能的原因很多。
我建议你跟踪一下 upload.php 看看具体是哪里出错了。
 楼主| 发表于 2012-4-19 14:07:48 | 显示全部楼层
本帖最后由 fute598 于 2012-4-19 14:30 编辑

经检查是中文文件名的问题,怎么办呢?
发表于 2012-4-19 18:26:03 | 显示全部楼层
fute598 发表于 2012-4-19 14:07
经检查是中文文件名的问题,怎么办呢?

不要使用中文文件名,尽量少使用中文,因为计算机是老外发明的。。。
发表于 2012-4-19 18:59:17 | 显示全部楼层
修改upload类  第306行(CI 2.1)
                /*
                 * Move the file to the final destination
                 * To deal with different server configurations
                 * we'll attempt to use copy() first.  If that fails
                 * we'll use move_uploaded_file().  One of the two should
                 * reliably work in most environments
                 */
                // @fix 中文文件上传 iconv("utf-8","gb2312//IGNORE",$this->file_name)
                if ( ! @copy($this->file_temp, $this->upload_path.iconv("utf-8","gb2312//IGNORE",$this->file_name)))
                {
                        if ( ! @move_uploaded_file($this->file_temp, $this->upload_path.iconv("utf-8","gb2312//IGNORE",$this->file_name)))
                        {
                                $this->set_error('upload_destination_error');
                                return FALSE;
                        }
                }

发表于 2012-4-19 19:03:58 | 显示全部楼层
sostart 发表于 2012-4-19 18:59
修改upload类  第306行(CI 2.1)
                /*
                 * Move the file to the final destination

这样上传没问题了,读取的时候要注意下   

比方说上传  测试.jpg
数据库里存的是  D://测试.jpg
读取的时候也要转下编码:  file(iconv("utf-8","gb2312//IGNORE",'D://测试.jpg'))
发表于 2012-4-21 00:25:08 | 显示全部楼层
估计是编码错误 不过我一般都会给上传的文件重命名一下

本版积分规则