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 ...
随机推荐
- SQL中采用Newtonsoft.Json处理json字符串
原文 SQL中采用Newtonsoft.Json处理json字符串 使用环境: SQL Server2005; VS2010; 关于SQL中部署CLR程序集的方法,网上一搜一大把,需要了解的自行查阅, ...
- HDU 3486 Interviewe
题目大意:给定n个数的序列,让我们找前面k个区间的最大值之和,每个区间长度为n/k,如果有剩余的区间长度不足n/k则无视之.现在让我们找最小的k使得和严格大于m. 题解:二分k,然后求RMQ检验. S ...
- C++模板:ST算法
//初始化 void init_rmq(int n){ for(int i=0;i<n;i++)d[i][0]=a[i]; for(int j=1;(1<<j)<=n;j++) ...
- BeanFactory 和ApplicationContext
BeanFactory和ApplicationContext对待bean后置处理器稍有不同.ApplicationContext会自动检测在配置文件中实现了BeanPostProcessor接口的所有 ...
- XML和DTD的简单介绍和入门
XML(Extensible Markup Lanaguage),可扩展标记语言,是标准通用标记语言(Standard Generalized Markup Language, SGML)的一个子集, ...
- config -导航
在config进行中配置 1在config中添加SITmap <siteMap enabled="true" defaultProvider="UserSiteM ...
- c语言: 文件io, 拷贝文件(二进制)
#include <stdio.h> #include <stdlib.h> #define TRAN_SZIE 1024 int copy_bin(char* from, c ...
- C#后台跳转
后台跳转的方法: 1.js脚本 [不推荐使用] Context.Response.Write("<script language=javascript>window.locati ...
- Nginx中location配置[转]
关于一些对location认识的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我 ...
- 【xcode】错误之Could not launch "" failed to get the task for process
http://blog.csdn.net/teng_ontheway/article/details/8467932 在Xcode下编译工程正常,在模拟器下运行正常,最后在真机上运行的时候出现了如下错 ...