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

[已解决] CI 的文件上传类有bug!

[复制链接]
发表于 2011-4-30 20:50:22 | 显示全部楼层 |阅读模式
代码很简单,就是把上传文件重命名一下
PHP复制代码
 $avatar_name = date('YmdHis').$_SESSION['id'].".".$fileextname;
 
               
                  if ( ! $this->upload->do_upload($avatar_name))
                  {
复制代码


结果 CI就处理不了了。。。
看他的核心代码 ,第一句就报错 过不去了!

PHP复制代码
public function do_upload($field = 'userfile')
        {
                print_r($_FILES);
 
        // Is $_FILES[$field] set? If not, no reason to continue.
                if ( ! isset($_FILES[$field]))
                {
                        $this->set_error('upload_no_file_selected');
                        return FALSE;
                }
复制代码


我都重新命名文件了,他用我重命名的新文件名去上传的_FILES 数组中查找文件名,当然找不到了!这句就过去不了。。
这是他例子里面的方法啊
如果你想在执行do_upload函数之前自定义自己的文件域名称,可通过以下方法实现:
$field_name = "some_field_name";
$this->upload->do_upload($field_name)
发表于 2011-4-30 21:15:37 | 显示全部楼层
...
$this->upload->do_upload($field_name)
这个$field_name是表单文件域的名字...不是神马文件名...
发表于 2011-5-1 19:13:42 | 显示全部楼层
ls正解。。。。。。。。。
发表于 2011-8-1 16:07:56 | 显示全部楼层
lamtin 发表于 2011-4-30 21:15
...
$this->upload->do_upload($field_name)
这个$field_name是表单文件域的名字...不是神马文件名... ...

请教,那如果想用文件名上传,这一句应该怎么写呢?
发表于 2011-8-1 16:17:33 | 显示全部楼层
bogy 发表于 2011-8-1 16:07
请教,那如果想用文件名上传,这一句应该怎么写呢?

不明白你要什么,这里是 $field_name 不是 $file_name
你可以通过 $field_name 取到你上传的文件名。
建议仔细阅读 PHP 手册,并且查看 $_FILES 数组内容。

PS: 你看一下手册里说的是“文件域名称”而不是“文件名称”,差别很大的。
发表于 2011-8-1 16:19:59 | 显示全部楼层
Hex 发表于 2011-8-1 16:17
不明白你要什么,这里是 $field_name 不是 $file_name
你可以通过 $field_name 取到你上传的文件名。
建 ...

多谢hex老大的指点。我的问题详述在后面的一个贴子了。可否指点?
问题如下:
CI上传的例子已经测试成功了,可以正常上传。
但是想自己扩展写一点的时候,比如三个file input的域,分别是file1,file2,file3,
这时候do_upload的参数应该怎么写呢,
用文件名肯定不对,循环调用file1,file2,file3也说没有选中文件。

发表于 2011-8-1 18:12:49 | 显示全部楼层
bogy 发表于 2011-8-1 16:19
多谢hex老大的指点。我的问题详述在后面的一个贴子了。可否指点?
问题如下:
CI上传的例子已经测试成功了 ...

$this->upload->do_upload('file1');
发表于 2011-8-1 19:22:06 | 显示全部楼层
bogy 发表于 2011-8-1 16:19
多谢hex老大的指点。我的问题详述在后面的一个贴子了。可否指点?
问题如下:
CI上传的例子已经测试成功了 ...

foreach()
{
      $this->upload->initialize($config);
      $this->upload->do_upload();
}
发表于 2011-8-2 09:47:41 | 显示全部楼层
CI的upload没问题...不过现在无法上传file数组弄得我只能用自己写的upload类
发表于 2011-8-2 09:49:34 | 显示全部楼层
zhouli520 发表于 2011-8-2 09:47
CI的upload没问题...不过现在无法上传file数组弄得我只能用自己写的upload类

可以批量传,每次do_upload之前都要$this->upload->initialize($config);才可以

本版积分规则