JS - FormData详解

JavaScript07

JS - FormData详解,第1张

1、将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率。

2、异步上传文件

1、创建一个空对象:

2、通过表单对formData进行初始化

创建表单:

通过表单元素作为参数,实现对formData的初始化:

1、通过get(key)与getAll(key)来获取相对应的值

2、通过append(key,value)在数据末尾追加数据

3、通过set(key, value)来设置修改数据

key的值不存在,会添加一条数据

key的值存在,会修改对应的value值

4、通过has(key)来判断是否存在对应的key值

5、通过delete(key)可以删除数据

创建表单:

发送数据:

在java中要实现异步上传要提前做好准备,对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。

这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。

common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。剩下的就是js文件的导入了,我导入了以下文件:

<script type="text/javascript" src="lib/Js/jquery.js"></script>

<script ltype="text/javascript" src="/js/ajaxfileupload.js"></script>

在页面中的写法:

div class="controls"><span class="btn green fileinput-button"><i class="icon-plus icon-white"></i>

<span>上传照片</span>

<input id="fileToUpload" name="myfiles" type="file" onchange="upload()" title="上传" /></span>

</div>function upload(){

$.ajaxFileUpload

(

{

url:'<%=basePath%>sysperson/uploadpic',

secureuri:false,

fileElementId:'fileToUpload',

dataType: 'text',

success: function (data, status)

{

document.all.mypic.src="<%=basePath%>uploads/" + data

document.all.picpath.value = data

},error : function(data, status, e) {

alert(e)

}

})

}