写了个文件上传表单,在网上找了个文件上传类,结果发现不知道怎么调用
<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; 


解决方案 »

  1.   

    首先这是加载就会执行的方法,楼主看看参数,需要什么给你应对的不就是的,
    $upload=new uploadFile($save_path = './upload/',$file_name = 'date',$allow_types = '');
    * @param $files 等待上传的文件(表单传来的$_FILES[]) 
    $upload->upload_file($files);
      

  2.   

    在你处理数据的页面即 upfile.php
    引用文件上传类
    使用的时候声明对象
    $uploadObj = new uploadFile();
    可以不带参数,它的3个参数都有默认值
    $save_path = './upload/'  文件保存的路径
    $file_name = 'date'       是否用自定义的名字,
    $allow_types = ''         允许上传的文件后缀名
    然后再调用函数
    $uploadObj->upload_file($_FILES);你连类的使用都不熟悉,还是建议你再看看如何使用类其实上传文件就一个 move_uploaded_file()函数
      

  3.   

    问题是我是这样写的,然后提交表单文件时,文件没有上传到指定的绝对路径upload目录
      

  4.   

    $up = new uploadFile;
    $up->upload_file($_FILES['myfile']);
      

  5.   


    找了半个小时,后面发现是单词写错了,晕,在记事本上写的,居然把$_FILES写成了$_FILE
    请问版主这类低级错误怎么避免
      

  6.   

    打开错误显示功能、全开错误检查级别
    php 就会提示你哪里有错
      

  7.   

    比如 $_FILES写成了$_FILE
    php 会有一个 
    Notice: Undefined variable: _FILE in .... on line ...
    警告,并告诉你在那个文件的哪一行
      

  8.   

    参考二楼的
    建议你先看一下upload后获取的文件他有多少后缀比如
    $_File['userfile'][name]
    $_File['userfile'][type]
    $_File['userfile'][size]

    等等
      

  9.   

    一点建议:
    用一个带错误提示和关健字变色的编辑器,例如zend_studio 和phpstorm ,就可以在书写$_POST $_FILES 这些变量会色,这样,写代码时,不用过度的纠结在这些错误上. good luck~
      

  10.   

    还有就是有时不便打开过多的错误提示时,多记录日志,便于程序trace~
      

  11.   

    我调用这个文件上传类时
    $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>上传失败!'; 
    版主帮看看这个类!谢谢
      

  12.   

    LZ在你的类里不是有一个个if用来做异常判断的吗 比如类型 大小之类的判断
    你先不要返回false  你返回数字看看 比如if($size > $this->max_size){ return 1;} 
    $upload = new uploadFile();
    echo $upload->upload_file($file);