一. PHP上传原理
view/up.php
<html> <form action="/ci/index.php/upload/up" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" name="sub" value="提交"> </form> </html>
controller/upload.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Upload extends CI_Controller { public function index() { $this->load->view('up'); } function up() { if(!empty($_POST['sub'])) { $file=($_FILES['upfile']); // var_dump($file); if($file['size']>=2000000) { echo "size no"; }else{ switch($file['type']) { case 'image/pjpeg': $hz=".jpg"; break; default: $hz=false; break; } if($hz) { $time=time(); $r=move_uploaded_file($file['tmp_name'],"./upload/{$time}{$hz}"); //echo $r; }else{ echo "type no"; } } } } }
二. CI框架的上传操作
1、定义一个数组,设置一些与上传相关的参数
//设置上传目录,这里写./,目录要建在网站根目录,就是和application同级
//如果你要放在application目录下,可以用系统定义的路径常量APPPATH
//例如APPPATH.'uploads/',路径是相对框架的路径的,不是www的路径
$config['upload_path'] = './uploads/';
//设置允许上传的类型
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
2、设置额外的参数
3、调用CI的上传通用类,并执行上传
//upload为调用的类名,全小写
$this->load->library('upload',$config);
//如果上传框的name写的是userfile,那就不用传参数了,如果不是,把name的值传进去
$this->upload->do_upload('上传框的name')
4、接受出错信息或成功信息
//出错信息
$error = array('error' => $this->upload->display_errors());
//成功信息,会把上传后的文件信息返回出来
$data = array('upload_data' => $this->upload->data());
详细信息参见手册:http://codeigniter.org.cn/user_guide/libraries/file_uploading.html