文件上传的步骤以及应该注意的地方
1:提交上传
1)在php.ini中设置file_uploads = On
2)表单的提交形式必须为post
3)enctype="multipart/form-data"
4)type="file"
2:接收信息
$_FILES
原文件名
临时文件名
大小
文件编码格式
报错信息
3:根据接收到的信息判断文件格式,大小等等
4:执行上传 move_uploaded_file()
CI框架的文件上传的步骤
1:文件上传类是system\libraries\Upload.php
2:执行上传的步骤
1)
$config['upload_path']="./upload"; //上传到的目录,注意用相对路径 upload需要手动建立
$config['allowed_types']="gif|jpg|png"; //限制文件类型
$config['max_size']="20000"; //限制上传文件大小 单位为B
2) $this->load->library("upload",$config); 加载上传类 并且写入congfig的参数
3)$this->upload->do_upload("file") 执行操作过程,括号里面的参数为表单的name
4)$this->upload->data() 获取上传参数
代码如下
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Upload extends CI_Controller {
function index(){
echo "文件上传";
}
function normal_upload(){
if($_POST){
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
$size = $_FILES['file']['size']; //单位为B
$time = time();
if($size){
//可以对文件大小 或者$type增加一些限制
}
$name=iconv("UTF-8","gb2312", $name);
//防止中文名乱码
$bool = move_uploaded_file($tmp_name,"./upload/".$time.$name);
if($bool){
echo "上传成功";
//可以做一些入库操作
}else{
echo "上传失败";
}
}else{
$this->load->view("upload/index");
}
}
function ci_upload(){
if($_POST){
$config['upload_path'] = './upload/';
$config['allowed_types'] = 'gif|jpg|png|txt';
$config['max_size'] = '100';
$this->load->library("upload",$config);
if($this->upload->do_upload("file")){
$data=array('upload_data'=>$this->upload->data()); //获取上传数据 入库
//print_r($data);
}
}else{
$this->load->view("upload/index");
}
}
}
?>