热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

《大写的求助!!》CI上传类error:从临时空间移动文件时出现错误

(PS:最新进展->我调用文件上传类库失败,也就是说我$this->load->library('upload',$cofig)这里出的问题,在这句前echo一个句子可以出来,在之后echo就不行。不知道肿么了,好心塞...)如题:昨天上传的...
(PS:最新进展->我调用文件上传类库失败,也就是说我$this->load->library('upload',$cofig)这里出的问题,在这句前echo一个句子可以出来,在之后echo就不行。不知道肿么了,好心塞...)

如题:昨天上传的时候还好好的,今天使用的时候就出现了这样的情况
打印$_FILES的时候文件的数据都有 但是临时目录下根本就没有临时文件

配置如下:

$upload_cofig['upload_path'] = './uploads/sourse_message/';
$upload_cofig['allowed_types'] = 'gif|jpg|png|jpeg';
$upload_cofig['max_size'] = '100000';
$upload_cofig['max_width'] = '1024';

还有我form里也写了enctype="multipart/form-data"

这是文件上传的处理方法

public function upload_file($filename){
        $upload_cofig['upload_path'] = './uploads/sourse_message/';
        $upload_cofig['allowed_types'] = 'gif|jpg|png|jpeg';
        $upload_cofig['max_size'] = '100000';
        $upload_cofig['max_width'] = '1024';
        $upload_cofig['file_name'] = date("Y-m-d H:i:s",time()).rand(1000,9999);
        $this->load->library('upload',$upload_cofig);
        if (!file_exists($upload_cofig['upload_path'])) {
            @mkdir($upload_cofig['upload_path']);
            chmod($upload_cofig['upload_path'], 0777);
        }
        if (!$this->upload->do_upload($filename)) {
            $result = array('flag'=>0,'msg' => $this->upload->display_errors());
        }else{
            $data=$this->upload->data();
            $result = array('flag'=>1,'msg'=>substr($upload_cofig['upload_path'], 1) . $data['file_name']);
        }

        return $result;
    }

补充一下:我在本地写了相同的文件上传测试代码,结果依然只是可以打印数据,但是临时文件夹下 没有临时文件 这是什么鬼?(包括文件隐藏的什么属性我也测试过,完全行不通)

回复内容:

(PS:最新进展->我调用文件上传类库失败,也就是说我$this->load->library('upload',$cofig)这里出的问题,在这句前echo一个句子可以出来,在之后echo就不行。不知道肿么了,好心塞...)

如题:昨天上传的时候还好好的,今天使用的时候就出现了这样的情况
打印$_FILES的时候文件的数据都有 但是临时目录下根本就没有临时文件

配置如下:

$upload_cofig['upload_path'] = './uploads/sourse_message/';
$upload_cofig['allowed_types'] = 'gif|jpg|png|jpeg';
$upload_cofig['max_size'] = '100000';
$upload_cofig['max_width'] = '1024';

还有我form里也写了enctype="multipart/form-data"

这是文件上传的处理方法

public function upload_file($filename){
        $upload_cofig['upload_path'] = './uploads/sourse_message/';
        $upload_cofig['allowed_types'] = 'gif|jpg|png|jpeg';
        $upload_cofig['max_size'] = '100000';
        $upload_cofig['max_width'] = '1024';
        $upload_cofig['file_name'] = date("Y-m-d H:i:s",time()).rand(1000,9999);
        $this->load->library('upload',$upload_cofig);
        if (!file_exists($upload_cofig['upload_path'])) {
            @mkdir($upload_cofig['upload_path']);
            chmod($upload_cofig['upload_path'], 0777);
        }
        if (!$this->upload->do_upload($filename)) {
            $result = array('flag'=>0,'msg' => $this->upload->display_errors());
        }else{
            $data=$this->upload->data();
            $result = array('flag'=>1,'msg'=>substr($upload_cofig['upload_path'], 1) . $data['file_name']);
        }

        return $result;
    }

补充一下:我在本地写了相同的文件上传测试代码,结果依然只是可以打印数据,但是临时文件夹下 没有临时文件 这是什么鬼?(包括文件隐藏的什么属性我也测试过,完全行不通)

CI中国 人好少 发布个帖子 半天没人回应 桑心

上传文件的大小?服务器post上传文件大小的限制?你这些都查清楚了?

应该有错误信息啥的吧,临时文件好像Windows能看到,linux tmp下我也找不到

看看是不是保存文件过程出现错误

1,在 Action 第一行,就先打印 $_PSOT,先确定文件是不是被提交过来,如果没提交过来,那基本就是前端的问题,否则,看 2
2,@mkdir($upload_cofig['upload_path']); 这一句其它并没有什么卵用,因为如果你创建目录失败,也不会报错,程序将继续往下进行,没有 upload_path 自然不是上传成功!
3,$this->upload->do_upload() 方法的参数是文件域的名称,然而我并不知道你那个 $filename 是什么东西!
4,打印 $this->upload->display_errors() 查看具体错误信息!

以上 4 点基本能确定问题所在!

我的代码:

/*
  *图片上传
  */
  protected function img_upload($image='')
  {
    $dirname = date( "Ymd" );
    $config['upload_path']      = '../public/images/'.$dirname.'/';
    $pathStr = $config['upload_path'];
    //文件夹不存在 则创建文件夹
    if ( !file_exists( $pathStr ) ) {
        if ( !mkdir( $pathStr , 0777 , true ) ) {
            $error = "mkdir failed";
            $code = '0';
            $res = array('0'=>$code,'1'=>$error);
            return $res;
        }
    }
    $config['allowed_types']    = 'jpg|jpeg';
    $config['file_name']        = time() . rand( 1 , 10000 );
    $config['max_size']         = 1024;
    $this->load->library('upload', $config);
    $this->upload->initialize($config);
    if ( ! $this->upload->do_upload($image))
    {
      $error = $this->upload->display_errors();
      $code = '0';
      $res = array('0'=>$code,'1'=>$error);
      return $res;
    }else{
      $file_name = $this->upload->data('file_name');
      $url = "/public/images/".$dirname.'/'.$file_name;
      $code = '1';
      $res = array('0'=>$code,'1'=>$url);
      return $res;
    }
  }

推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • win10系统搭建Java开发环境的操作方法
    本文介绍了win10系统搭建Java开发环境的详细操作方法,包括下载Windows10系统和Java SE,安装Java开发环境,设置变量等步骤。操作简单,只需按照指导进行即可。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • macOS10.12安装win10系统教程,实现双系统安装
    本文介绍了如何在macOS10.12系统上安装win10系统,实现双系统的安装。通过使用Boot Camp助理,选取win10系统镜像并分配系统容量,然后进行安装。安装完win10系统后,安装驱动并重启系统即可完成双系统的安装。 ... [详细]
author-avatar
我心飞翔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有