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 相关文章推荐
PHP 和 MySQL 基础教程(一)
Oct 09 PHP
一个PHP日历程序
Dec 06 PHP
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
php微信开发之上传临时素材
Jun 24 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
PHP 对象继承原理与简单用法示例
Apr 21 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
js实现每日签到功能
2018/11/29 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
Python 第一步 hello world
2009/09/25 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
django输出html内容的实例
2018/05/27 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
NET程序员上机面试题
2015/05/23 面试题
大学军训自我鉴定
2013/12/15 职场文书
施工工地安全标语
2014/06/07 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
MySQL详细讲解变量variables的用法
2022/06/21 MySQL