码迷,mamicode.com
首页 > 其他好文 > 详细

关于异步文件上传和文件表单元素的复制、设置和清除

时间:2014-08-14 13:30:18      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   使用   os   io   

一、解决文件异步上传的方法有3种:1.使用iframe 2.使用FormData(html5新功能)  3.使用flash

1.使用iframe

原来我以为使用iframe是把整个表单复制到iframe里面,然后把iframe里面的表单提交给服务器,这样来实现表单的异步上传。最后我想错了,实现原理比我想的要简单的多。先看一下代码:

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 2 <html>
 3   <head>
 4     <title>starting page, simple test</title>
 5     
 6     <meta http-equiv="pragma" content="no-cache">
 7     <meta http-equiv="cache-control" content="no-cache">
 8     <meta http-equiv="expires" content="0">    
 9     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
10     <meta http-equiv="description" content="This is my page">
11     <!--
12     <link rel="stylesheet" type="text/css" href="styles.css">
13     -->
14 
15   </head>
16   
17   <body>
18     <form id="upload-form" target="postForm" action="http://localhost:8080/spring/upload/file" method="post" enctype="multipart/form-data">
19         <input type="file" name="file"/>
20         <iframe name="postForm" frameborder="0" style="display: none;"></iframe>
21         <button type="submit" id="cd-button">提交</button>
22     </form>
23     
24   </body>
25 </html>

其中关键在于:form表单的target和iframe的target的使用,两个target名称一致。form表单在本页提交信息,要求服务器返回信息给对应target的值的iframe。所以当前也没不刷新,只是让iframe刷新了。这种方式最先于yahoo开创使用,向YAHOO致敬(hat tip to YAHOO!)

至于取得在iframe里的响应信息,这里我就不在详述。

2.使用FormData

FormData的详细解说:http://www.cnblogs.com/rubylouvre/archive/2011/04/26/2028827.html 向大牛学习,我就不献丑了。

3.使用flash

使用flash方式上传的教程网上有很多,比如:swfupload 等,可以去网上搜一下,就能看到了。

 

二、对于复制或者设置和清除file表单元素

1.复制和设置file表单元素

出于安全考虑,file表单元素是不能被复制和设置的。对比三大浏览器复制和设置file表单元素

浏览器   firefox google chrome IE
设置
复制

 

 

 

目前测试的只有firefox支持选择文件后复制文件表单,文件表单一样有用。如果需要把本表单的file复制到另外一个表单上,可以用乾坤大挪移

bubuko.com,布布扣

新建的file表单元素是没有值的。

2.清除file表单元素的值

看上面为file值设置,不充许。但是为file设置为""的时候确是firefox允许,所以firefox的jquery代码写法为:$(‘input[name=file]‘).val(‘‘);

chrome,ie 的jquery代码写法为$(‘input[name=file]‘).replaceWith($(‘input[name=file]‘).clone());

 

 

关于异步文件上传和文件表单元素的复制、设置和清除,布布扣,bubuko.com

关于异步文件上传和文件表单元素的复制、设置和清除

标签:des   style   blog   http   color   使用   os   io   

原文地址:http://www.cnblogs.com/bloges/p/3911903.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!