最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > php教程 >

php iframe实现无刷新文件上传

时间:2014-09-03 11:14来源:未知 作者:最模板zuimoban 点击: 次
首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件,其实原理很简单,代码如下: form enctype = multipart/form-data method = POST target = upload action = http://local

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

调用示例,代码如下:

  1. $inputName =  'uploadfile';  
  2.  // 即<input type=“file" name="uploadfile" /> 中的name值,不填也行 
  3. $upload = new upload($inputName); 
  4. $new_dir = "/www";  // 将文件移动到的路径 
  5. $upload->moveTo($new_dir);
  6.  
(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容