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 相关文章推荐
Linux下实现PHP多进程的方法分享
Aug 16 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
php+mysql数据库查询实例
Jan 21 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
PHP中Array相关函数简介
Jul 03 PHP
PHP基于进程控制函数实现多线程
Dec 09 PHP
php自动加载代码实例详解
Feb 26 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
数字转英文
2006/12/06 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
js自定义事件代码说明
2011/01/31 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
js实现打字小游戏
2019/12/17 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
小程序中的箭头函数的具体使用
2020/06/19 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
编写Python CGI脚本的教程
2015/06/29 Python
Python实现分割文件及合并文件的方法
2015/07/10 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
如何开发一个JQuery插件
2016/07/28 面试题
加拿大留学自荐信
2014/01/28 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
安全保证书怎么写
2015/02/28 职场文书
入学证明
2015/06/23 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
PyQt5实现多张图片显示并滚动
2021/06/11 Python
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript