0

0

codeigniter多文件上传使用示例_PHP教程

php中文网

php中文网

发布时间:2016-07-13 10:38:58

|

906人浏览过

|

来源于php中文网

原创

 这篇文章主要介绍了codeigniter多文件上传使用示例,需要的朋友可以参考下

浚心时尚购物商城程序
浚心时尚购物商城程序

时尚购物程序v1.01、全立体设计。此系统由3个Flash动画为主线(正式版带原文件),设计更形象,网站更有吸引力。这种设计在网店系统内绝无仅有,使您的网店与众不同。2、内置音乐播放器,简单灵活的操作即可完成设置,前台任意调用。并带详细说明文件,一看就懂。合理使用此功能,可使网站更富渲染力。3、支持多图显示,每件产品最多可以上传9张图片。4、后台功能强大,销售管理,财务管理,在线支付平台管理等功能

下载

代码如下: 0,          "max_width"   => 0,          "max_height"  => 0,          "max_filename"  => 0,          "allowed_types"  => "",          "file_temp"   => "",          "file_name"   => "",          "orig_name"   => "",          "file_type"   => "",          "file_size"   => "",          "file_ext"   => "",          "upload_path"  => "",          "overwrite"   => FALSE,          "encrypt_name"  => FALSE,          "is_image"   => FALSE,          "image_width"  => "",          "image_height"  => "",          "image_type"  => "",          "image_size_str" => "",          "error_msg"   => array(),          "mimes"    => array(),          "remove_spaces"  => TRUE,          "xss_clean"   => FALSE,          "temp_prefix"  => "temp_file_",          "client_name"  => ""         );        //Set each configuration.      foreach($defaults as $key => $val){       if(isset($config[$key])){        $method = "set_{$key}";        if(method_exists($this, $method)){         $this->$method($config[$key]);        } else {         $this->$key = $config[$key];        }       } else {        $this->$key = $val;       }      }        //Check if file_name was provided.      if(!empty($this->file_name)){       //Multiple file upload.       if(is_array($this->file_name)){        //Clear file name override.        $this->_file_name_override = "";          //Set multiple file name override.        $this->_multi_file_name_override = $this->file_name;       //Single file upload.       } else {        //Set file name override.        $this->_file_name_override = $this->file_name;          //Clear multiple file name override.        $this->_multi_file_name_override = "";       }      }     }        /**     * File MIME Type     *      * Detects the (actual) MIME type of the uploaded file, if possible.     * The input array is expected to be $_FILES[$field].     *      * In the case of multiple uploads, a optional second argument may be     * passed specifying which array element of the $_FILES[$field] array     * elements should be referenced (name, type, tmp_name, etc).     *     * @access protected     * @param $file array     * @param $count int     * @return void     */     protected function _file_mime_type($file, $count=0){      //Mutliple file?      if(is_array($file["name"])){       $tmp_name = $file["tmp_name"][$count];       $type = $file["type"][$count];      //Single file.      } else {       $tmp_name = $file["tmp_name"];       $type = $file["type"];      }        //We'll need this to validate the MIME info string (e.g. text/plain; charset=us-ascii).      $regexp = "/^([a-z-]+/[a-z0-9-.+]+)(;s.+)?$/";        /* Fileinfo Extension - most reliable method.       *        * Unfortunately, prior to PHP 5.3 - it's only available as a PECL extension and the       * more convenient FILEINFO_MIME_TYPE flag doesn't exist.       */        if(function_exists("finfo_file")){         $finfo = finfo_open(FILEINFO_MIME);        if(is_resource($finfo)){         $mime = @finfo_file($finfo, $tmp_name);         finfo_close($finfo);           /* According to the comments section of the PHP manual page,          * it is possible that this function returns an empty string          * for some files (e.g. if they don't exist in the magic MIME database).          */           if(is_string($mime) && preg_match($regexp, $mime, $matches)){            $this->file_type = $matches[1];           return;           }        }        }        /* This is an ugly hack, but UNIX-type systems provide a "native" way to detect the file type,       * which is still more secure than depending on the value of $_FILES[$field]['type'], and as it       * was reported in issue #750 (https://github.com/EllisLab/CodeIgniter/issues/750) - it's better       * than mime_content_type() as well, hence the attempts to try calling the command line with       * three different functions.       *       * Notes:       * - the DIRECTORY_SEPARATOR comparison ensures that we're not on a Windows system       * - many system admins would disable the exec(), shell_exec(), popen() and similar functions       *   due to security concerns, hence the function_exists() checks       */        if(DIRECTORY_SEPARATOR !== "\"){         $cmd = "file --brief --mime ".escapeshellarg($tmp_name)." 2>&1";          if(function_exists("exec")){         /* This might look confusing, as $mime is being populated with all of the output when set in the second parameter.          * However, we only neeed the last line, which is the actual return value of exec(), and as such - it overwrites          * anything that could already be set for $mime previously. This effectively makes the second parameter a dummy          * value, which is only put to allow us to get the return status code.          */          $mime = @exec($cmd, $mime, $return_status);          if($return_status === 0 && is_string($mime) && preg_match($regexp, $mime, $matches)){           $this->file_type = $matches[1];           return;          }        }        }         if((bool)@ini_get("safe_mode") === FALSE && function_exists("shell_exec")){        $mime = @shell_exec($cmd);        if(strlen($mime) > 0){         $mime = explode(" ", trim($mime));         if(preg_match($regexp, $mime[(count($mime) - 1)], $matches)){          $this->file_type = $matches[1];          return;         }        }       }         if(function_exists("popen")){        $proc = @popen($cmd, "r");        if(is_resource($proc)){         $mime = @fread($proc, 512);         @pclose($proc);         if($mime !== FALSE){          $mime = explode(" ", trim($mime));          if(preg_match($regexp, $mime[(count($mime) - 1)], $matches)){           $this->file_type = $matches[1];           return;          }         }        }       }         //Fall back to the deprecated mime_content_type(), if available (still better than $_FILES[$field]["type"])       if(function_exists("mime_content_type")){        $this->file_type = @mime_content_type($tmp_name);        //It's possible that mime_content_type() returns FALSE or an empty string.        if(strlen($this->file_type) > 0){         return;        }       }         //If all else fails, use $_FILES default mime type.       $this->file_type = $type;     }        /**     * Set Multiple Upload Data     *     * @access protected     * @return void     */     protected function set_multi_upload_data(){      $this->_multi_upload_data[] = array(       "file_name"   => $this->file_name,       "file_type"   => $this->file_type,       "file_path"   => $this->upload_path,       "full_path"   => $this->upload_path.$this->file_name,       "raw_name"   => str_replace($this->file_ext, "", $this->file_name),       "orig_name"   => $this->orig_name,       "client_name"  => $this->client_name,       "file_ext"   => $this->file_ext,       "file_size"   => $this->file_size,       "is_image"   => $this->is_image(),       "image_width"  => $this->image_width,       "image_height"  => $this->image_height,       "image_type"  => $this->image_type,       "image_size_str" => $this->image_size_str      );     }        /**     * Get Multiple Upload Data     *     * @access public     * @return array     */     public function get_multi_upload_data(){      return $this->_multi_upload_data;     }        /**     * Multile File Upload     *     * @access public     * @param string     * @return mixed     */     public function do_multi_upload($field){      //Is $_FILES[$field] set? If not, no reason to continue.      if(!isset($_FILES[$field])){ return false; }        //Is this really a multi upload?      if(!is_array($_FILES[$field]["name"])){       //Fallback to do_upload method.       return $this->do_upload($field);      }        //Is the upload path valid?      if(!$this->validate_upload_path()){       //Errors will already be set by validate_upload_path() so just return FALSE       return FALSE;      }        //Every file will have a separate entry in each of the $_FILES associative array elements (name, type, etc).      //Loop through $_FILES[$field]["name"] as representative of total number of files. Use count as key in      //corresponding elements of the $_FILES[$field] elements.      for($i=0; $iset_error("upload_file_exceeds_limit");         break;         //UPLOAD_ERR_FORM_SIZE         case 2:          $this->set_error("upload_file_exceeds_form_limit");         break;         //UPLOAD_ERR_PARTIAL         case 3:          $this->set_error("upload_file_partial");         break;         //UPLOAD_ERR_NO_FILE         case 4:          $this->set_error("upload_no_file_selected");         break;         //UPLOAD_ERR_NO_TMP_DIR         case 6:          $this->set_error("upload_no_temp_directory");         break;         //UPLOAD_ERR_CANT_WRITE         case 7:          $this->set_error("upload_unable_to_write_file");         break;         //UPLOAD_ERR_EXTENSION         case 8:          $this->set_error("upload_stopped_by_extension");         break;         default:          $this->set_error("upload_no_file_selected");         break;        }          //Return failed upload.        return FALSE;       }         //Set current file data as class variables.       $this->file_temp = $_FILES[$field]["tmp_name"][$i];       $this->file_size = $_FILES[$field]["size"][$i];       $this->_file_mime_type($_FILES[$field], $i);       $this->file_type = preg_replace("/^(.+?);.*$/", "\1", $this->file_type);       $this->file_type = strtolower(trim(stripslashes($this->file_type), '"'));       $this->file_name = $this->_prep_filename($_FILES[$field]["name"][$i]);       $this->file_ext  = $this->get_extension($this->file_name);       $this->client_name = $this->file_name;         //Is the file type allowed to be uploaded?       if(!$this->is_allowed_filetype()){        $this->set_error("upload_invalid_filetype");        return FALSE;       }         //If we're overriding, let's now make sure the new name and type is allowed.       //Check if a filename was supplied for the current file. Otherwise, use it's given name.       if(!empty($this->_multi_file_name_override[$i])){        $this->file_name = $this->_prep_filename($this->_multi_file_name_override[$i]);          //If no extension was provided in the file_name config item, use the uploaded one.        if(strpos($this->_multi_file_name_override[$i], ".") === FALSE){         $this->file_name .= $this->file_ext;        //An extension was provided, lets have it!        } else {         $this->file_ext = $this->get_extension($this->_multi_file_name_override[$i]);        }          if(!$this->is_allowed_filetype(TRUE)){         $this->set_error("upload_invalid_filetype");         return FALSE;        }       }         //Convert the file size to kilobytes.       if($this->file_size > 0){        $this->file_size = round($this->file_size/1024, 2);       }         //Is the file size within the allowed maximum?       if(!$this->is_allowed_filesize()){        $this->set_error("upload_invalid_filesize");        return FALSE;       }         //Are the image dimensions within the allowed size?       //Note: This can fail if the server has an open_basdir restriction.       if(!$this->is_allowed_dimensions()){        $this->set_error("upload_invalid_dimensions");        return FALSE;       }         //Sanitize the file name for security.       $this->file_name = $this->clean_file_name($this->file_name);         //Truncate the file name if it's too long       if($this->max_filename > 0){        $this->file_name = $this->limit_filename_length($this->file_name, $this->max_filename);       }         //Remove white spaces in the name       if($this->remove_spaces == TRUE){        $this->file_name = preg_replace("/s+/", "_", $this->file_name);       }         /* Validate the file name        * This function appends an number onto the end of        * the file if one with the same name already exists.        * If it returns false there was a problem.        */        $this->orig_name = $this->file_name;        if($this->overwrite == FALSE){         $this->file_name = $this->set_filename($this->upload_path, $this->file_name);         if($this->file_name === FALSE){          return FALSE;         }        }         /* Run the file through the XSS hacking filter        * This helps prevent malicious code from being        * embedded within a file.  Scripts can easily        * be disguised as images or other file types.        */        if($this->xss_clean){         if($this->do_xss_clean() === FALSE){          $this->set_error("upload_unable_to_write_file");          return FALSE;         }        }         /* 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        */        if(!@copy($this->file_temp, $this->upload_path.$this->file_name)){         if(!@move_uploaded_file($this->file_temp, $this->upload_path.$this->file_name)){          $this->set_error("upload_destination_error");          return FALSE;         }        }         /* Set the finalized image dimensions        * This sets the image width/height (assuming the        * file was an image).  We use this information        * in the "data" function.        */        $this->set_image_properties($this->upload_path.$this->file_name);         //Set current file data to multi_file_upload_data.       $this->set_multi_upload_data();      }        //Return all file upload data.      return TRUE;    }   }    

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/733185.htmlTechArticle这篇文章主要介绍了codeigniter多文件上传使用示例,需要的朋友可以参考下 代码如下:?php if(!defined(BASEPATH)){ exit(No direct script access allowed); }/...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CodeIgniter3(CI3)基础教程(全)
CodeIgniter3(CI3)基础教程(全)

共37课时 | 4.8万人学习

Codeigniter 3 中文开发手册
Codeigniter 3 中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号