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读取超大文件的实例代码
Apr 01 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
培养自己的php编码规范
Sep 28 PHP
PHP实现linux命令tail -f
Feb 22 PHP
基于PHP实现的多元线性回归模拟曲线算法
Jan 30 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 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实现MySQL更新记录的代码
2008/06/07 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
解析PHP提交后跳转
2013/06/23 PHP
php分页函数示例代码分享
2014/02/24 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
python操作redis方法总结
2018/06/06 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
教师的实习鉴定
2013/12/15 职场文书
高中语文课后反思
2014/04/27 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
详解Python requests模块
2021/06/21 Python
Java实现带图形界面的聊天程序
2022/06/10 Java/Android
Python first-order-model实现让照片动起来
2022/06/25 Python