本文实例讲述了php+iframe实现页面无需刷新的异步文件上传,是非常实革命小故事用的常见技巧。分享给大家供大家参考。具体分析如下:
说到iframe,现在用它的人是越来越少了,并且很多人都相信它应该被ajax所取代,的确如此,因为ajax太出色了。
不过有一种情况的实现我还是选择了iframe,这就是本文要说的文件的异步上传,感兴趣的可以试试,如果用原生的ajax来实现应该是要复杂的多。
先来给初学者补补基础知识:
1. 在iframe标签一般会指定其name特性以于标识;
2. 在form表单中通过action(目标地址)和target(目标窗口,默认为_lf)来确定提交的目的地;
3. 将form中的target指向iframe的name,则可将表单提交到了隐藏框架iframe中;
4. iframe里的内容实际上也是一个页面,其中的js里的parent对象指代父页面,即嵌入iframe的页面;
5. php中用move_uploaded_file()函数来实现文件上传,$_files数组存储有上传文件的相关信息。
本文实现的是一个用户选择了头像文件后立刻上传并显示在页面上的例子,废话不多说,思路是这样的:
1. 在表单中嵌入一个iframe,设定好name特性值;
2. 在选六级准考证择文件上传的控件的值改变时触发一个js函数,该函数将表单提交至iframe,而iframe内嵌的页面用来处理文件上传;
3. 在iframe中完成了文件上传之后,在js中通过parent来操作父页面,在特定的标签内显示图片,并将图片的保存地址赋给一个隐藏域;
4. 回到原来的页面,现在既完成了文件的上传,也在隐藏域内记录了文件的路径,整个过程没有刷新页面;
5. 最后用户只需提交原来的页面时重置表单的action和target属性的值即可。
下面是效果截图和实现的代码:
upload.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" conte银行利率下调nt="text/html; chart=utf-8" /> <title>iframe异步文件上传</title> </head> <body> <h1>iframe异步文件上传</h1> <form method="post" enctype="multipart/form-data"> 用户名: <input type="text" name="urname" /><br /> 上传头像: <input type="file" name="uploadphoto" onchange="startupload(this.form)" /> <iframe style="display:none" mce_style="display:none" name="uploadframe"></iframe> <input type="hidden" id="photo" name="photo" value="" /> <div id="displayphoto"></div> <input type="submit" name="submitted" value="提交" onclick="formsubmit(this.form)" /> </form> <?php //页面提交后显示相关信息 if (ist($_post['submitted'])) { $html = '<hr /><p>上传成功!</p>'; $html .= '<p>用户名:'.htmlspecialchars($_post['urname']).'</p>'; $html .= '<p>头像地址:'.htmlspecialchars($_post['photo']).'</p>'; $html .= '<div><img src="'.htmlspecialchars($_post['photo']我的一天500字作文).'" mce_src="'.htmlspecialchars($_post['photo']).'" /></div><hr />'; echo $html; } ?> </body> </html> <mce:script type="text/javascript"><!-- //选择了文件后开始异步上传 function startupload(oform) { document.getelementbyid('displayphoto').innerhtml = 'loading...'; oform.action = 'proceedupload.php'; oform.target = 关于毛泽东的诗'uploadframe'; oform.submit(); } //整个页面的提交 function formsubmit(oform) { oform.action = document.url; oform.target = '_lf'; oform.submit(); } // --></mce:script>
proceedupload.php页面如下:
<?php //这里仅以特定图片格式举例,本应动态获取 $url = 'upload/img' . time() . '.jpg'; if (move_uploaded_file($_files['uploadphoto']['tmp_name'], $url)) { //删除之前的图片 $_post['photo'] !== '' && unlink($_post['photo']); ?> <html> <head> <body onload="doneloading(parent, '<?=$url?>')"> </body> </html> <mce:script type="text/javascript"><!-- //在页面上显示刚刚上传成功的图像 function doneloading(theframe, url) { var odiv = theframe.document.getelementbyid('displayphoto'); odiv.innerhtml = '<img src="' + url + '" mce_src="' + url + '" alt="上传头像" />'; theframe.document.getelementbyid('photo').value = url; } // --></mce:script> <?php }?>
感兴趣的朋友可以测试运行一下本文实例,相信本文所述对大家php程序设计的学习有一定的借鉴价值。
本文发布于:2023-04-06 21:36:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/de54acbd8e4e42babbb16c9c3f201f49.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP+iFrame实现页面无需刷新的异步文件上传.doc
本文 PDF 下载地址:PHP+iFrame实现页面无需刷新的异步文件上传.pdf
留言与评论(共有 0 条评论) |