加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php iframe做到无刷新文件上传

发布时间:2023-06-12 12:55:10 所属栏目:PHP教程 来源:
导读:ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件,其实原理很简单,代码如下:<form enctype="multipart/form-data" method="POST" target="upload" action="http://localhost/class.up

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

<form enctype="multipart/form-data" method="POST" target="upload" action="http://localhost/class.upload.php" > 

          <input type="file" name="uploadfile" /> 

          <input type="submit" />  

</form> 

<iframe name="upload" style="display:none"></iframe> 

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

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

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

class upload 

   public $_file; 

   public function __construct( $name =null) 

   { 

       if(is_null($name) || !isset($_FILES[$name])) 

            $name = key($_FILES);  

       if(!isset($_FILES[$name])) 

           throw new Exception("并没有文件上传"); 

       $this->_file  = $_FILES[$name]; 

       if(!is_uploaded_file($this->_file['tmp_name'])) 

            throw new Exception("异常情况"); 

       if($this->_file['error'] !== 0) 

            throw new Exception("错误代码:".$this->_file['error']);      

   } 

   public function moveTo( $new_dir) 

   { 

       $real_dir = $this->checkDir($new_dir); 

       return move_uploaded_file($this->_file['tmp_name'], $real_dir.'/'.$this->_file['name']); 

   } 

   private function checkDir($dir) 

   {//开源代码Cuoxin.com 

       $real_dir = realpath($dir); 

       if($real_dir === false) 

           throw new Exception("给定目录{$dir}不存在"); 

       if(!is_writable($real_dir)) 

           throw new Exception("给定目录{$dir}不可写"); 

       return $real_dir; 

   } 

调用示例,代码如下:

$inputName =  'uploadfile';  

 // 即<input type=“file" name="uploadfile" /> 中的name值,不填也行 

$upload = new upload($inputName); 

$new_dir = "/www";  // 将文件移动到的路径 

$upload->moveTo($new_dir);

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!