php利用iframe实现无刷新文件上传功能
上传原理很简单就是利用表单的打开方式为iframe的name名,这样就可以在当前页面的iframe打来了,实现文件上传,再利用js返回上传结果。
form target .在 action 属性中规定的页面会在新窗口中打开。如果是iframe,则在此iframe中打开。
phpAjaxUpload.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function startUpload()
{
document.getElementById('processing').innerHTML="正在上传中"; }
function stopUpload(result)
{
var msg;
switch(result)
{
case 0:
msg="上传成功";
break;
case 1:
msg='文件大小超过限制';
break;
case 2:
msg='只能上传图片文件';
break;
case 3:
msg='move_uploaded_file失败';
break;
case 4:
msg="其他错误";
break;
default:
break;
}
document.getElementById('processing').innerHTML=msg;
alert(msg);
}
</script> </head> <body> <div id="processing">结果信息</div>
<form action="phpAjaxUpload2.php" method="post" enctype="multipart/form-data" target="uploadFrame" onsubmit="startUpload()">
<label for="myFile">上传文件</label>
<input type="hidden" name="MAX_FILE_SIZE" value="1024000" /><input type="file" name="myFile" id="myFile" />
<input type="submit" name="submit" value="上传" /> </form>
<iframe name="uploadFrame" style="width:0;height:0; border:0;"></iframe> </body>
</html>
上面的iframe中设置width,height为0,还有一点border为0,否则还是有一点边框。注意
MAX_FILE_SIZE要仔细设定,如果文件大小大于它,那么php端$_FILES['image']['size']就会为0.
phpAjaxUpload2.php
hello
<?php
$result;
if(isset($_POST['submit']))
{ $dir='asaph/';
$maxSize=1*pow(2,20);
$fileTypes=array('jpg','png','gif','bmp');
$myFileType=substr($_FILES['myFile']['name'],strpos($_FILES['myFile']['name'],'.')+1); if($_FILES['myFile']['size']>$maxSize)
{
$result=1;
}
else if(!in_array($myFileType,$fileTypes))
{
$result=2;
}
else if(is_uploaded_file($_FILES['myFile']['tmp_name']))
{
$dest=$dir.$_FILES['myFile']['name'];
if( @move_uploaded_file($_FILES['myFile']['tmp_name'],$dest))
{
$result=0;
}
else
{
$result=3;
}
}
else
{
$result=4;
}
} ?>
<script type="text/javascript">
window.top.stopUpload(<?php echo $result;?>);
</script>
更多:http://zccst.iteye.com/blog/1276920input file美化看:http://www.oschina.net/code/snippet_273800_20312
php利用iframe实现无刷新文件上传功能的更多相关文章
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)
Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现) 相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦 ...
- 使用PHP和HTML5 FormData实现无刷新文件上传教程
无刷新文件上传是一个常见而又有点复杂的问题,常见的解决方案是构造 iframe 方式实现. 在 HTML5 中提供了一个 FormData 对象 API,通过 FormData 可以方便地构造一个表单 ...
- 【JS】ajax 实现无刷新文件上传
一.摘要 最近在做个东西,需要实现页面无刷新文件上传,目前看到的方法有两种 1) 通过隐藏iframe 实现页面无刷新,适用于不关心上传结果 <form target="hiddenF ...
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认”拿来主义“,只是我个人更喜欢凡是求个所以 ...
- 实用ExtJS教程100例-009:ExtJS Form无刷新文件上传
文件上传在Web程序开发中必不可少,ExtJS Form中有一个filefield字段,用来选择文件并上传.今天我们来演示一下如何通过filefield实现ExtJS Form无刷新的文件上传. 首先 ...
- ie8实现无刷新文件上传
ie8由于无法使用FormData,想要无刷新上传文件就显得比较麻烦.这里推荐使用jQuery-File-Upload插件,它能够很方便的解决ie8无刷新文件上传问题.(最低兼容到ie6) jQuer ...
- SpringMVC ajax技术无刷新文件上传下载删除示例
参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...
- jquery无刷新文件上传 解决IE安全性问题
很多项目中都需要有文件上传的功能,一般文件上传有几种方式,input file表单上传,flash上传. flash就不说了,能接受flash的就用吧. 下面介绍的这种是基于input file控件的 ...
- Javascrpt无刷新文件上传
最近工作中遇到上传文件问题,主要需求是一步点击上传,兼容ie8+,当时用的dojox/form/uploader控件,这两天扒了一下源码,明白了原理拿出来分享一下. 总体思路如下: 1.对于支持XML ...
随机推荐
- 将默认首页设置成index.do的方法
变态欺骗法,今天csdn一个前辈的,学习了,公司服务器是weblogic的,也可以欺骗. 但是我又非常迫切.非常盼望.非常渴望使用index.do做首页,怎么办? Tomcat中用一段注释: When ...
- 配置hibernate数据库连接
第一步:右键项目->MyEclipse->添加Hibernate组件,指定数据库连接配置如下(src/hibernate.cfg.xml) MySQL对连接的有效期是28800s,一个连接 ...
- 也谈.NET MVC 2 + ExtJS的部署问题
由于业务需要,笔者刚进到一个项目组,由于没有美工,前台采用ExtJs + MVC 2 ,迭代1的项目做的还算比较顺利,至少在本机上是运行没有任何问题的, 但是为了给客户演示,我兴高采烈的将网站部署在I ...
- asp.net传值
asp.net页面传至几种方法 Response.Redirect (或称 Query String 方式.URL方式) Response.Redirect("WebForm5.aspx&q ...
- 解决centos7安装wmwaretools找不到kernel header
解决centos6安装wmwaretools找不到kernel header http://www.centoscn.com/CentosBug/softbug/2015/0525/5531.html ...
- Ubuntu 15.04 Rails4.2.5 处理异常
1. 修改: /app/controllers/application_controller.rb文件为如下样子: class ApplicationController < ActionCon ...
- BZOJ 1718: [Usaco2006 Jan] Redundant Paths 分离的路径( tarjan )
tarjan求边双连通分量, 然后就是一棵树了, 可以各种乱搞... ----------------------------------------------------------------- ...
- 远程读取URL 建议用curl代替file_get_contents
初学php的朋友们,很容易翻一个错误,在写采集程序或者调用api接口总会有线考虑到使用file_get_contents函数来或许内容,程序的访问量不大倒是没什么影响,但是访问量提升了那非常的悲剧了, ...
- 【转】C++常见错误大全
原文转自:http://hi.baidu.com/qiou2719/item/b9eed949130ff50ec0161331 C++常见错误大全 0. XXXX "is not a cla ...
- ASP.NET jQuery 随笔 在TextBox里面阻止复制、剪切和粘贴事件
当用户要输入一些密码.信用卡信息和银行账号等敏感信息,用户更希望手工通过键盘敲入数据,而好过通过剪贴板复制粘贴. 我们先来看下实现后的效果: <%@ Page Language="C# ...