表单无刷新上传图片

近期做有关上传图片的项目,发现都没有使用无刷新页面上传方式,都是通过传统的上传图片跳转然后显示图片,这对于上传多张图片就太不适用!

网上也有各种异步上传的插件 如 swfupload等比较庞大的插件,利用flash上传,顺带介绍一个比较简洁的ajax上传图片的插件ajaxFileUpload

直接上地址:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html

现在普通上传方式上改造一下,实现无刷新上传

通过隐藏iframe,提交以后不跳转新页面上传(注意红色部分)

1)给form 设置一个 target 属性,提交的 时候会跳转到该地址

2)设置一个隐藏的iframe (注意名字和ID),上传地址输出的内容就会出现在iframe里面,在获取iframe里面的返回值(如图片地址)

上传页面部分代码:

<form action="upload.php" method="post" enctype="multipart/form-data" target="frshowpic" id="myForm">

<table >

<tr>

<td></td>

<td><input type="file" name="avatar" accept="image/*"></td>

</tr>

<tr>

<td colspan="2"><input type="submit" value="上传图片"></td>
</tr>
</table>
</form>
<div id="img">这里显示图片</div>

<!--影藏iframe-->
<iframe id="frshowpic" name="frshowpic" ></iframe>

<script type="text/javascript">

//用来显示返回结果,隐藏的iframe里面要调用这个显示图片的函数

function showpic(msg,status){

if(status=="ok"){

document.getElementById("myForm").reset();

document.getElementById("img").innerHTML = ‘<img src="avatar/org_‘+msg+‘" width="100">‘;

}else{

alert(msg);

}

}

</script>

3)上传图片php地址:

返回上传的图片地址以及状态

 exit("<script>window.parent.showpic(‘".$newfile."‘,‘ok‘)</script>");//生成图片成功,这个内容是输出到了隐藏的iframe里面

upload.php

<?php

$savepath = ‘avatar/‘;//上传目录

$files = array_keys($_FILES);

$fiedname = $files[0];

if ((($_FILES[$fiedname]["type"] == "image/gif")|| ($_FILES[$fiedname]["type"] == "image/jpg")|| ($_FILES[$fiedname]["type"] == "image/bmp")|| ($_FILES[$fiedname]["type"] == "image/jpeg")|| ($_FILES[$fiedname]["type"] == "image/pjpeg")||($_FILES[$fiedname]["type"] == "image/png")||($_FILES[$fiedname]["type"] == "image/x-png"))){//3M

if($_FILES[$fiedname]["size"] < 1048576*3){

$extend = explode(".",$_FILES[$fiedname]["name"]);

$key = count($extend)-1;

$imgtype = ".".$extend[$key];

$newfilename = uniqid().date("Ymdhis").time();

$newfile = $newfilename.$imgtype;

if(!is_dir($savepath)) {

mkdir($savepath,0777,true);

}

$orgin_image_location = $savepath."org_".$newfile;//原图

//上传大图

$pic = move_uploaded_file($_FILES[$fiedname]["tmp_name"],$orgin_image_location);

chmod($orgin_image_location, 0777);

@unlink($_FILES[$fiedname]["tmp_name"]);

if(file_exists($orgin_image_location)){

exit("<script>window.parent.showpic(‘".$newfile."‘,‘ok‘)</script>");//生成图片成功

}else{

exit("<script>window.parent.showpic(‘上传失败‘,‘error4‘)</script>");

}

}else{

exit("<script>window.parent.showpic(‘图片太大‘,‘error2‘)</script>");

}

}else {
exit("<script>window.parent.showpic(‘图片类型不正确‘,‘error1‘)</script>");
}
?>

by  cxr

同步博文:http://www.cnblogs.com/newbalanceteam/p/4849859.html

时间: 2024-11-01 11:59:45

表单无刷新上传图片的相关文章

form表单无刷新上传文件

很多时候,我们上传完文件之后,不想当前页面跳转,或者是刷新一下.那么我们需要怎么做呢? 首先,我们用的是最简单的form表单上传,提交方式.代码如下 <!--大家注意到这个form的target的了么?这个target属性的值frameFile,是form之后的 iframe的name值,这样的写法是让当前的form表单在提交表单内容的时候转交给iframe中进行页面 中表单处理,并且不会产生当前页面跳转!--> <form id="uploadForm" class

注册表单无刷新验证+php无刷新刷新验证码

原生Php无刷新(验证+刷新验证码) 概述:本案例既实现了php注册页面的验证码无刷新刷新功能 又实现了表单的无刷新验证,.效果绝对实用.本例只做为测试样例,未接数据库验证. 源文件分2部分:code.php和zhuce.php. 其中code.php文件为验证码文件,zhuce.php文件为注册页面. 闲话少说,代码献上. Code.php <?php session_start(); //生成验证码图片 Header("Content-type: image/PNG"); $

$_FILE参数详解及简单&lt;form&gt;表单无刷新上传文件

$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组$HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST方法上传 $_FILES数组内容如下: $_FILES['myFile']['name'] 客户端文件的原名称 $_FILES['myFile']['type']   文件的 MIME类型,需要浏览器提供该信息的支持,例如"image/gif" $_FILES['myFile']['size']    已上传文件的大小,

javascript 无刷新上传图片之原理

刚开始我认为可以像ajax 那样获取到数据然后通过ajax 发送请求,后来发现浏览器为了客户端的安全默认并没有给javascript 这个权限.这个方法当然是行不同了.我看了好像开源的上传图片原理,当然大部分是flash.但是为了方便使用js的也不少. 原理都是使用iframe 上传,在from标签里面有个属性 和a 标签一样 target,target标示这个表单的数据提交的目的地.网页特效代码target里面写iframe的name ,这样表单的数据就提交到了这个 iframe里面.根据这个

MVC无刷新上传图片并显示

@{ ViewBag.Title = "Home Page"; } <script src="../../Scripts/swfobject.js" type="text/javascript"></script> <script src="../../Scripts/jquery.uploadify.v2.1.4.js" type="text/javascript">&

无刷新上传图片,ajax 和 iframe

iframe 上传 upload.html <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Title</title>     <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js">

JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop)

原文:JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop) 源代码下载地址:http://www.zuidaima.com/share/1550463770102784.htm sevlet写的demo,可直接运行.   

(iframe实现)无刷新上传图片

Index.aspx 页面 <html> <head> <title>iframe实现无刷新上传图片</title> </head> <body> <input id="photo" name="photo" type="text" style="display: none" /> <iframe id="upfile1&quo

使用SWFUpload组件无刷新上传图片

使用SWFUpload组件无刷新上传图片 在做项目时,需要用到一个图片的无刷新上传,之前听说过SWFUpload,于是想要通过SWFUpload来进行图片的无刷新上传,由于我的项目属于是ASP.NET项目,所以本文着重讲解ASP.NET 的使用,个人感觉示例基本给的很清晰,参考文档进行开发,并非难事 0.     首先下载swfUpload 包,在下载的包中有samples文件夹,samples下有demos文件夹,打开demos文件夹可看到如下图所示结构 我们待会会用到的包括,swfuploa