首页 > 语言 > PHP > 正文

php iframe实现无刷新文件上传

2024-09-04 11:45:02
字体:
来源:转载
供稿:网友

首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件,其实原理很简单,代码如下:

  1. <form enctype="multipart/form-data" method="POST" target="upload" action="http://localhost/class.upload.php" > 
  2.           <input type="file" name="uploadfile" /> 
  3.           <input type="submit" />  
  4. </form> 
  5. <iframe name="upload" style="display:none"></iframe> 

和一般的<form>标签相比多了一个target属性罢了,用于指定标签页在哪里打开以及提交数据,如果没有设置该属性,就会像平常一样在本页重定向打开action中的url.

而如果设置为iframe的name值,即"upload"的话,就会在该iframe内打开,因为CSS设置为隐藏,因而不会有任何动静,若将display:none去掉,还会看到服务器的返回信息.

另外贴一下自己组织的类,代码如下:

  1. class upload 
  2.    public $_file
  3.  
  4.    public function __construct( $name =null) 
  5.    { 
  6.        if(is_null($name) || !isset($_FILES[$name])) 
  7.             $name = key($_FILES); 
  8.              
  9.        if(!isset($_FILES[$name])) 
  10.            throw new Exception("并没有文件上传"); 
  11.             
  12.        $this->_file  = $_FILES[$name]; 
  13.         
  14.        if(!is_uploaded_file($this->_file['tmp_name'])) 
  15.             throw new Exception("异常情况"); 
  16.        if($this->_file['error'] !== 0) 
  17.             throw new Exception("错误代码:".$this->_file['error']);      
  18.    } 
  19.    public function moveTo( $new_dir
  20.    { 
  21.        $real_dir = $this->checkDir($new_dir); 
  22.        return move_uploaded_file($this->_file['tmp_name'], $real_dir.'/'.$this->_file['name']); 
  23.    } 
  24.    private function checkDir($dir
  25.    {//开源代码Vevb.com 
  26.        $real_dir = realpath($dir); 
  27.        if($real_dir === false) 
  28.            throw new Exception("给定目录{$dir}不存在"); 
  29.        if(!is_writable($real_dir)) 
  30.            throw new Exception("给定目录{$dir}不可写"); 
  31.        return $real_dir
  32.    } 
  33.  

调用示例,代码如下:

  1. $inputName =  'uploadfile';  
  2.  // 即<input type=“file" name="uploadfile" /> 中的name值,不填也行 
  3. $upload = new upload($inputName); 
  4. $new_dir = "/www";  // 将文件移动到的路径 
  5. $upload->moveTo($new_dir);

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表