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 相关文章推荐
一个简单的域名注册情况查询程序
Oct 09 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
CURL的学习和应用(附多线程实现)
Jun 03 PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 PHP
PHP代码优化之成员变量获取速度对比
Feb 28 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
php静态文件返回304技巧分享
Jan 06 PHP
php实现httpRequest的方法
Mar 13 PHP
php文件读取方法实例分析
Jun 20 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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基础学习笔记
2007/03/18 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
php字符串操作常见问题小结
2016/10/11 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
热点新闻滚动特效的js代码
2013/08/17 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
vue组件name的作用小结
2018/05/23 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
Ubuntu下安装PyV8
2016/03/13 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
python实现决策树分类(2)
2018/08/30 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
Python中url标签使用知识点总结
2020/01/16 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
大学应届生的自我评价
2014/03/06 职场文书
海飞丝广告词
2014/03/20 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
影视广告专业求职信
2014/09/02 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
web前端之css水平居中代码解析
2021/05/20 HTML / CSS