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 编写的日历
Oct 09 PHP
一个php作的文本留言本的例子(三)
Oct 09 PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
Zend Framework分发器用法示例
Dec 11 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 PHP
php7新特性的理解和比较总结
Apr 14 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 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实现过滤表单提交中html标签的方法
2014/10/17 PHP
php树型类实例
2014/12/05 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
《猫》教学反思
2014/02/26 职场文书
工程项目建议书范文
2014/03/12 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
创意婚礼策划方案
2014/05/18 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
酒会邀请函
2015/01/31 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
个人年终总结怎么写
2015/03/09 职场文书
博士生专家推荐信
2015/03/25 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技