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二维数组的去重问题解析
Jul 17 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
PHP身份证校验码计算方法
Aug 10 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP基于PDO扩展操作mysql数据库示例
Dec 24 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
PHP 彩色文字实现代码
2009/06/29 PHP
一个PHP数组应该有多大的分析
2009/07/30 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
理解javascript async的用法
2017/08/22 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
Python自动发邮件脚本
2017/03/31 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
python标记语句块使用方法总结
2019/08/05 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
工程力学硕士生的自我评价范文
2013/11/16 职场文书
商场活动策划方案
2014/01/24 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
进步之星获奖感言
2014/02/22 职场文书
升学宴来宾致辞
2015/07/27 职场文书
python源码剖析之PyObject详解
2021/05/18 Python
Python基础之变量的相关知识总结
2021/06/23 Python
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript