写了个文件上传表单,在网上找了个文件上传类,结果发现不知道怎么调用
<form action="upfile.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
选择文件:<input type="file" name="myfile">
<input type="submit" value="上传文件">
</form>
/**
* 文件上传类
*/
class uploadFile {
public $max_size = '1000000';//设置上传文件大小
public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称
public $allow_types;//允许上传的文件扩展名,不同文件类型用“|”隔开
public $errmsg = '';//错误信息
public $uploaded = '';//上传后的文件名(包括文件路径)
public $save_path;//上传文件保存路径
private $files;//提交的等待上传文件
private $file_type = array();//文件类型
private $ext = '';//上传文件扩展名
/**
* 构造函数,初始化类
* @access public
* @param string $file_name 上传后的文件名
* @param string $save_path 上传的目标文件夹
*/
public function __construct($save_path = './upload/',$file_name = 'date',$allow_types = '') {
$this->file_name = $file_name;//重命名方式代表以时间命名,其他则使用给予的名称
$this->save_path = (preg_match('/\/$/',$save_path)) ? $save_path : $save_path . '/';
$this->allow_types = $allow_types == '' ? 'jpg|gif|png|zip|rar' : $allow_types;
}
/**
* 上传文件
* @access public
* @param $files 等待上传的文件(表单传来的$_FILES[])
* @return boolean 返回布尔值
*/
public function upload_file($files) {
$name = $files['name'];
$type = $files['type'];
$size = $files['size'];
$tmp_name = $files['tmp_name'];
$error = $files['error'];
switch ($error) {
case 0 : $this->errmsg = '';
break;
case 1 : $this->errmsg = '超过了php.ini中文件大小';
break;
case 2 : $this->errmsg = '超过了MAX_FILE_SIZE 选项指定的文件大小';
break;
case 3 : $this->errmsg = '文件只有部分被上传';
break;
case 4 : $this->errmsg = '没有文件被上传';
break;
case 5 : $this->errmsg = '上传文件大小为0';
break;
default : $this->errmsg = '上传文件失败!';
break;
}
if($error == 0 && is_uploaded_file($tmp_name)) {
//检测文件类型
if($this->check_file_type($name) == FALSE){
return FALSE;
}
//检测文件大小
if($size > $this->max_size){
$this->errmsg = '上传文件<font color=red>'.$name.'</font>太大,最大支持<font color=red>'.ceil($this->max_size/1024).'</font>kb的文件';
return FALSE;
}
$this->set_save_path();//设置文件存放路径
$new_name = $this->file_name != 'date' ? $this->file_name.'.'.$this->ext : date('YmdHis').'.'.$this->ext;//设置新文件名
$this->uploaded = $this->save_path.$new_name;//上传后的文件名
//移动文件
if(move_uploaded_file($tmp_name,$this->uploaded)){
$this->errmsg = '文件<font color=red>'.$this->uploaded.'</font>上传成功!';
return TRUE;
}else{
$this->errmsg = '文件<font color=red>'.$this->uploaded.'</font>上传失败!';
return FALSE;
}
}
}
<form action="upfile.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
选择文件:<input type="file" name="myfile">
<input type="submit" value="上传文件">
</form>
/**
* 文件上传类
*/
class uploadFile {
public $max_size = '1000000';//设置上传文件大小
public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称
public $allow_types;//允许上传的文件扩展名,不同文件类型用“|”隔开
public $errmsg = '';//错误信息
public $uploaded = '';//上传后的文件名(包括文件路径)
public $save_path;//上传文件保存路径
private $files;//提交的等待上传文件
private $file_type = array();//文件类型
private $ext = '';//上传文件扩展名
/**
* 构造函数,初始化类
* @access public
* @param string $file_name 上传后的文件名
* @param string $save_path 上传的目标文件夹
*/
public function __construct($save_path = './upload/',$file_name = 'date',$allow_types = '') {
$this->file_name = $file_name;//重命名方式代表以时间命名,其他则使用给予的名称
$this->save_path = (preg_match('/\/$/',$save_path)) ? $save_path : $save_path . '/';
$this->allow_types = $allow_types == '' ? 'jpg|gif|png|zip|rar' : $allow_types;
}
/**
* 上传文件
* @access public
* @param $files 等待上传的文件(表单传来的$_FILES[])
* @return boolean 返回布尔值
*/
public function upload_file($files) {
$name = $files['name'];
$type = $files['type'];
$size = $files['size'];
$tmp_name = $files['tmp_name'];
$error = $files['error'];
switch ($error) {
case 0 : $this->errmsg = '';
break;
case 1 : $this->errmsg = '超过了php.ini中文件大小';
break;
case 2 : $this->errmsg = '超过了MAX_FILE_SIZE 选项指定的文件大小';
break;
case 3 : $this->errmsg = '文件只有部分被上传';
break;
case 4 : $this->errmsg = '没有文件被上传';
break;
case 5 : $this->errmsg = '上传文件大小为0';
break;
default : $this->errmsg = '上传文件失败!';
break;
}
if($error == 0 && is_uploaded_file($tmp_name)) {
//检测文件类型
if($this->check_file_type($name) == FALSE){
return FALSE;
}
//检测文件大小
if($size > $this->max_size){
$this->errmsg = '上传文件<font color=red>'.$name.'</font>太大,最大支持<font color=red>'.ceil($this->max_size/1024).'</font>kb的文件';
return FALSE;
}
$this->set_save_path();//设置文件存放路径
$new_name = $this->file_name != 'date' ? $this->file_name.'.'.$this->ext : date('YmdHis').'.'.$this->ext;//设置新文件名
$this->uploaded = $this->save_path.$new_name;//上传后的文件名
//移动文件
if(move_uploaded_file($tmp_name,$this->uploaded)){
$this->errmsg = '文件<font color=red>'.$this->uploaded.'</font>上传成功!';
return TRUE;
}else{
$this->errmsg = '文件<font color=red>'.$this->uploaded.'</font>上传失败!';
return FALSE;
}
}
}
解决方案 »
- 求高手,我的phpmydamin配置哪里出了问题了?
- 求获取FLV真实地址的代码
- 关于条件查询问题???
- 急高分求救,请问大家酒店里gateway里显示使用时间,你们是怎么实现的?
- 蛋疼的新手又来求助前辈了。。同一页面处理post。。
- 请问关于函数参数
- PHP +COM + XML +MSSQL 十分怪异的题目,很急.谁有办法,谢谢拉,问了很多人现在还没解决.
- php中字符串能相乘吗?请看下面代码,希望能解释一下
- smarty问题:unable to write to $compile_dir
- ==为显示数据库记录的问题郁闷两天了==高分请教啊!我是cai
- 我这样的情况应该学PHP还是Python?
- 新手问题--多关键词如何描红。
$upload=new uploadFile($save_path = './upload/',$file_name = 'date',$allow_types = '');
* @param $files 等待上传的文件(表单传来的$_FILES[])
$upload->upload_file($files);
引用文件上传类
使用的时候声明对象
$uploadObj = new uploadFile();
可以不带参数,它的3个参数都有默认值
$save_path = './upload/' 文件保存的路径
$file_name = 'date' 是否用自定义的名字,
$allow_types = '' 允许上传的文件后缀名
然后再调用函数
$uploadObj->upload_file($_FILES);你连类的使用都不熟悉,还是建议你再看看如何使用类其实上传文件就一个 move_uploaded_file()函数
$up->upload_file($_FILES['myfile']);
找了半个小时,后面发现是单词写错了,晕,在记事本上写的,居然把$_FILES写成了$_FILE
请问版主这类低级错误怎么避免
php 就会提示你哪里有错
php 会有一个
Notice: Undefined variable: _FILE in .... on line ...
警告,并告诉你在那个文件的哪一行
建议你先看一下upload后获取的文件他有多少后缀比如
$_File['userfile'][name]
$_File['userfile'][type]
$_File['userfile'][size]
等等
用一个带错误提示和关健字变色的编辑器,例如zend_studio 和phpstorm ,就可以在书写$_POST $_FILES 这些变量会色,这样,写代码时,不用过度的纠结在这些错误上. good luck~
$file=new uploadFile();
$file->upload_file($_FILES['myfile']);
发现有的文件上传不了,类型也符合'jpg|gif|png|zip|rar' 这当中的,上传时失败也没啥提示
上传文件成功也没提示,方法upload_file中不是成功失败都有提示吗?
$this->errmsg = '文件<font color=red>'.$this->uploaded.'</font>上传成功!';
return TRUE;
}else{
$this->errmsg = '文件<font color=red>'.$this->uploaded.'</font>上传失败!';
版主帮看看这个类!谢谢
你先不要返回false 你返回数字看看 比如if($size > $this->max_size){ return 1;}
$upload = new uploadFile();
echo $upload->upload_file($file);