阿大说,为作一张配图,还要换系统,好苦13 ╮(╯-╰)╭php
在使用CI以前,咱们来看看用原生代码是如何上传的,作个对比,就知道CI有多么方便~html
首先建立一个视图ci/application/views/uploader1.php数据库
当表单须要上传时,应填写'enctype="multipart/form-data"'segmentfault
<form action="upload/up" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" name="sub" value="submit"> </form>
而后写控制器ci/application/controllers/upload1.php数组
move_uploaded_file() 是PHP的一个内置方法,把上传好的文件从缓存处移到你想要的位置缓存
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Upload1 extends CI_Controller { function index() { $this -> load -> view('uploader1.php'); //调用视图 } function up() //这个就是视图里action调用的上传接口 { if (!empty($_POST['sub'])) { //当提交的时候 // var_dump($_FILES['upfile']); 能够打印看看上传文件的信息 $f = $_FILES['upfile']; //把文件信息赋给一个变量,方便调用 if ($f['size'] > 102400) { //限制文件大小 echo "too large"; } else { if ($f['type'] == 'image/png') { //限制文件类型为png $t = time(); // 时间戳 $s = '.png'; move_uploaded_file($f['tmp_name'], move_uploaded_file($f['tmp_name'], './uploads/'.$t.$s); //$f['tmp_name']是上传好的文件从缓存文件,'/uploads/$t$s'是咱们要移动到的文件夹,在根目录下本身建立的uploads文件夹。'./uploads/'.$t.$s 是变量的值进行字符串拼接,把文件以时间戳命名 } } } } } ?>
如今能够访问localhost/ci/index.php/upload进行上传文件了app
CI有一个丰富的上传类upload,它的源码放在system/libraries/upload.php。咱们能够轻松的调用它完成一系列操做。ide
首先建立一个视图ci/application/views/uploader2.phpcodeigniter
注意此处 action 改成 'upload2/up',其余不变post
<form action="upload2/up" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" name="sub" value="submit"> </form>
而后写控制器ci/application/controllers/upload2.php
名称 | 介绍 |
---|---|
upload_path | 文件上传路径。该路径必须是可写的,相对路径和绝对路径都可以。 |
allowed_types | 容许上传文件的MIME类型;一般文件扩展名能够作为MIME类型. 容许多个类型用竖线分开 |
file_name | 想要使用的文件名,若是设置了这个参数,CodeIgniter 将根据这里设置的文件名来对上传的文件进行重命名。文件名中的扩展名也必须是容许的文件类型。 |
max_size | 容许上传文件大小的最大值(以K为单位)。该参数为0则不限制。注意:一般PHP也有这项限制,能够在php.ini文件中指定。一般默认为2MB。 |
max_width | 上传文件的宽度最大值(像素为单位)。0为不限制。 |
max_height | 上传文件的高度最大值(像素为单位)。0为不限制。 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Upload2 extends CI_Controller { function index() { $this -> load -> view('uploader2.php'); } function up() { // 把须要的配置放入config数组 $config['upload_path'] = './uploads'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '102400'; $this -> load -> library('upload', $config); //调用CI的upload类 $this -> upload -> do_upload('upfile'); //使用do_upload('上传框的name')方法进行上传 // 如下代码为拓展的,非必要 if ($this -> upload -> do_upload('upfile')) { //上传成功 $data = array('upload_data' => $this -> upload -> data()); //将文件信息存入数组 var_dump($data); //打印文件信息 } else { //上传失败 $error = array('error' => $this -> upload -> display_errors());//将错误信息存入数组 var_dump($error); //打印错误信息 } } } ?>
如今能够访问localhost/ci/index.php/upload2进行上传文件了
CI的上传类是咱们上传更方便,代码量少,而且很整洁
跟着阿大学CodeIgniter (一)——了解MVC
跟着阿大学CodeIgniter (二)—— 文件上传
跟着阿大学CodeIgniter (三)—— 操做数据库