php+iframe实现无刷新上传文件例子

使用label的for属性来取代js的event转移,解决IE下“SCRIPT5: 拒绝访问”的问题;

html代码

 代码如下 复制代码

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
// 当前上传对象
var _current    = null;
// 上传回调方法
function onUploadSuccess(info){
    // 控制台调试,可能是因为console没定义导致IE无法使用此功能
    typeof console.dir!=='undefined' && console.dir(info);
    // 上传成功
    if(typeof info.status!=='undefined' && typeof info.path!=='undefined' && info.status==1 && info.path!=''){
        // 改变图片src,实现实时预览
        if(_current.find('img').size()>0)
            _current.find('img:eq(0)').prop('src', info.path);
        else
            _current.html('<img src="'+info.path+'" width="100%" height="100%" />');
        // 返回
        return;
    }
    // 上传失败则提示错误信息
    alert(info.info);
    // 返回
    return;
}
$(function(){
    $('label[for]').click(function(){
        _current    = $(this);
        $('.uploadform')[0].reset();
    });
    $('.uploadform input:file').change(function(){
        $(this).parent().submit();
    });
});
</script>
</head>
<body>
 
<label for="photo1" style="border:1px solid #CCC; padding:2px; width:120px; height:80px; display:block;"></label>
<label for="photo1" style="border:1px solid #CCC; padding:2px; width:120px; height:80px; display:block;"></label>
 
<form style="display:none;" class="uploadform" action="{:U('upload?callback=window.parent.onUploadSuccess')}" method="post" enctype="multipart/form-data" target="uploadiframe">
    <input type="file" name="photo1" id="photo1" />
    <iframe style="display:none;" name="uploadiframe"></iframe>
</form>
 
</body>
</html>

php处理程序

 代码如下 复制代码

<?php
$retval = array('status'=>0, 'info'=>'', 'path'=>'');
if(/*upload success*/){
    $retval['status'] = 1;
    $retval['path'] = 'somepath';
}else{
    $retval['info'] = 'someerror';
}
echo "<script>{$_GET['callback']}(".json_encode($retval).");</script>";
exit;

简单总结:这个其实很简单在表单中我们action设置为上传php的模板文件,然后我们再在表单target 打开方式设置为iframe的name即可。

时间: 2024-09-10 03:04:53

php+iframe实现无刷新上传文件例子的相关文章

请问使用iframe进行无刷新上传文件时,好像没有效果?

问题描述 请问使用iframe进行无刷新上传文件时,好像没有效果? 在网上找了关于iframe 无刷新上传文件,上传时没有反应,这一般是什么原因?会不会是浏览器的原因啊? 解决方案 你代码有问题..和浏览器没关系.如果你跨域上传文件,是无法获取iframe里面的内容的 给iframe添加onload事件,获取iframe里面额返回值进行判断,不要依赖动态页返回的内容,要不如果动态页报错没有输出js回调或者提示信息就和没反应一样了

asp.net中MVC借助Iframe实现无刷新上传文件实例_实用技巧

本文实例讲述了asp.net中MVC借助Iframe实现无刷新上传文件的方法.分享给大家供大家参考.具体实现方法如下: html: 复制代码 代码如下: <div id="uploadwindow" style="display: none;">     <form action="/ShopActivitys/ImportActivityItems" id="form1" name="form1&

通过隐藏iframe实现无刷新上传文件操作_javascript技巧

其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点.当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了.但是用iFrame来实现无刷新上传文件确实一个很好的选择. 解决办法是通过一个隐藏的iframe来处理上传操作我采用的是ReactJS,amazeui,nodejs 1.html target指向iframe的name,就是把上传后的操作交给iframe来处理. <form id="supplyformFile&qu

javascript实现iframe无刷新上传文件

许多系统都会有上传图片这个功能,但是如果是用form表单提交的话,每次都会刷新页面,这样体验很不好: 今天分享一个利用iframe实现无刷新上传文件的方法,直接上代码: html <form class="form-horizontal text-sm" id="upload" name="upload[]" target="frm" action="/ERP/files/upFiles" metho

一个PHP无刷新上传文件程序代码

一个最原始最简单的iframe上传例子: 前台上传页面index.html,主要是一个表单与一个js回调函数.上传文件时,form表单的method. enctype属性必须和下面代码一样.然后将target的值设为iframe的name,这样就可以实现无刷新上传文件.  代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml

利用iframe无刷新上传文件的坑

原文:利用iframe无刷新上传文件的坑 页面里经常要用到文件上传的功能,而且要求页面不刷新,先说一下原理:页面里放一个file控件和submit按钮,外面用form表单包住,给form表单加上对应的属性值,action.method.entype.name,到这一步,能上传文件了,但是这样上传文件会刷新页面,这不是我们想要的.我们要的是文件上传时不刷新页面,那么也简单,在页面里放一个iframe,设置它的宽高为0,这里有两个坑: 1.需要设置iframe的name值与form的target属性

php+iframe实现隐藏无刷新上传文件_php实例

首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件 其实原理很简单 复制代码 代码如下: <form enctype="multipart/form-data" method="POST" target="upload" action="http://localhost/class.upload.php" > <input type="file" nam

谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法_javascript技巧

发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明:      html如下所示,请求的路径action为"upload",其它的不做任何处理: <form method="POST" action="upload" enctype="multipart/form-data"> 名字 <input type="t

ajax +jsp+iframe无刷新上传文件

  http://hi.baidu.com/zj360202/blog/item/f23e3711f929c774cb80c475.html ajax jsp 无刷新上传文件 2009-10-26 16:43首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的.    而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"