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

一、解决文件异步上传的方法有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复制到另外一个表单上,可以用乾坤大挪移

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

2.清除file表单元素的值

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

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

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

时间: 2024-12-20 15:23:56

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

Struts2文件上传(基于表单的文件上传)

•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-FileUpload组件特点 –使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能 –能够全程控制上传内容 –能够对上传文件的大小.类型进行控制 •需要下载Common-FileUplaod框架地址(当然MyEclipce中Struts2支持里自带有这两个包): –http://jak

实现文件上传,以及表单提交成功的回调函数

最近在项目中需要实现图片的上传,并且成功后返回图片上传保存路径,通过查找资料探索研究,实现了项目功能需求,记在这方便自己以后查阅,也为有同样需求的码友分享,功能实现比较简单,如果有好的建议和实现方法,还望多多指教. 主要将实现一下两个功能: 1.使用commons-fileupload实现文件的上传(包括图片): 2.使用jquery-form.js实现表单提交成功的回调函数. 页面设计fileupload.jsp: Html代码   <%@ page language="java&quo

servlet文件上传2——复合表单提交(数据获取和文件上传)

上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(commons-fileupload-1.2.1.jar   commons-io-1.3.2.jar )进行普通数据获取和文件上传:普通文本需要用getString("编码格式")方法获取,否则汉字会出现乱码,最开始我一直用的getString()获取,发现传到数据的数据全是乱码,查看流浪器的里面的

Java中request请求之 - 带文件上传的form表单

常用系统开发中总免不了显示图片,保存一些文件资料等操作. 这些操作的背后,就是程序员最熟悉的 enctype="multipart/form-data"类型的表单. 说起file类型的input,我们往往会遇到问题: 最为常见的就是编码格式-中文乱码.解决中文乱码最好的方式就是我们的项目全部使用 utf-8 格式的国际编码,因为它是可变字节长度的编码,对于占用2字节的中文绰绰有余了.另外就是使用 String s2 = new String(s1.getBytes(“ISO-8859-

Layer文件上传同时传递表单数据

<!DOCTYPE html> <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <head&g

SpringMVC实现单文件上传、多文件上传、文件列表显示、文件下载

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和SpringMVC文件

SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程免费下载 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和Spr

Javascript Fromdata 与jQuery 实现Ajax文件上传以及文件的删除

前端HTML代码: <!DOCTYPE html> <html> <head> <title>ajax</title> <script type="text/javascript" src="js/jquery.js"></script> <meta charset="utf-8" /> <style type="text/css&qu

文件上传---普通文件fileupload.jar和url文件httpUrlConnection

文件上传---普通文件和url文件 主要用来学习使用common-fileupload.jar和java.net.httpURLConnection 普通文件: 1 //上传xls文件到临时目录 2 if (! ServletFileUpload.isMultipartContent(request)) return; 3 DiskFileItemFactory factory = new DiskFileItemFactory(); // 建立factory 4 factory.setSize