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 VS ASP
Oct 09 PHP
php session处理的定制
Mar 16 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php学习笔记 [预定义数组(超全局数组)]
Jun 09 PHP
比较详细PHP生成静态页面教程
Jan 10 PHP
探讨PHP JSON中文乱码的解决方法详解
Jun 06 PHP
php实现加减法验证码代码
Feb 14 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
8个PHP数组面试题
Jun 23 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
PHP实现的曲线统计图表示例
Nov 10 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函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
Python并行分布式框架Celery详解
2018/10/15 Python
Python实现Linux监控的方法
2019/05/16 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
新闻专业个人自我评价
2013/09/21 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
岗位聘任书范文
2014/03/29 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
销售辞职信范文
2015/03/02 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
Redis的字符串是如何实现的
2021/10/24 Redis
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android