php+iframe实现隐藏无刷新上传文件


Posted in PHP onFebruary 10, 2012

首先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) 
{ 
$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);
PHP 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
PHPwind整合最土系统用户同步登录实现方法
Dec 08 PHP
PHP 第三节 变量介绍
Apr 28 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 #PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 #PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 #PHP
PHP高级对象构建 工厂模式的使用
Feb 05 #PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 #PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 #PHP
php 搜索框提示(自动完成)实例代码
Feb 05 #PHP
You might like
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
js获取单选按钮的数据
2006/11/27 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
Javascript函数的参数
2015/07/16 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
Python实现求两个csv文件交集的方法
2017/09/06 Python
python实现银行管理系统
2019/10/25 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
大学四年个人的自我评价
2014/02/26 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
课程改革实施方案
2014/03/16 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
演讲稿格式范文
2014/05/19 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
法人身份证明书
2015/06/18 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
Go语言编译原理之变量捕获
2022/08/05 Golang