积分系统文件上传之FormData对象

时间:2022-09-12 15:12:38

排版 、内容什么的都还没有整理,但是你想看,我绝对不拦着。

前言:
XMLHttpRequest Level 2添加了一个新的接口FormData.可以把form中所有表单元素的name与value组成一个queryString,提交到后台。

利用FormData对象,可通过JavaScript用一些键值对来模拟一系列表单控件

还可以使用XMLHttpRequest的send()方法来异步的提交这个”表单”.比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件;

如果把表单的编码类型设置为multipart/form-data ,则通过FormData传输的数据格式和表单通过submit() 方法传输的数据格式相同

为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利。

有了这个FormData,我们就可以轻松地使用Ajax方式进行文件上传了。

构造函数

new FormData (form? : HTMLFormElement)

参数

form (可选)

一个HTML表单元素,可以包含任何形式的表单控件,包括文件输入框.

方法

append()

给当前FormData对象添加一个键/值对.

void append(DOMString name, Blob value, optional DOMString filename);
void append(DOMString name, DOMString value);

参数值

name:字段名称
value:字段值
fiilename:可选
指定的文件名,当value参数被指定为一个blob对象或者一个file对象时,该文件名会被发送到服务器上,对于blob对象来说这个值默认为“blob”;

一个 Blob对象表示一个不可变的, 原始数据的类似文件对象
多文件上传:

data.append('file[]', this.files[i]);

项目:
GridFS是一种将大型文件存储在MongoDB的文件规范。所有官方支持的驱动均实现了GridFS规范。GridFS 规范提供了一种透明的机制,可以将一个大文件分割成为多个较小的文档。这将容许我们有效的保存大的文件对象,特别对于那些巨大的文件,比如视频。

会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。
queryString
查询字符串,xxx.asp?pn=123456
?号后面的就是querystring
可以在接受提交的网页里用request(“变量”)取得数值,如上URL则
request(“pn”)=123456

open(“http://www.baidu.com“, “_self”);
打开一个新窗口,并装载URL指定的文档,或装载一个空白文档
window.open([URL], [窗口名称], [参数字符串])
URL:可选参数,在窗口中要显示网页的网址或路径。如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档。
窗口名称:可选参数,被打开窗口的名称。
1.该名称由字母、数字和下划线字符组成。
2.”_top”、”_blank”、”_selft”具有特殊意义的名称。
_blank:在新窗口显示目标网页
_self:在当前窗口显示目标网页
_top:框架网页中在上部窗口中显示目标网页
3.相同 name 的窗口只能创建一个,要想创建多个窗口则 name 不能相同。
4.name 不能包含有空格。
参数字符串:可选参数,设置窗口参数,各参数用逗号隔开。

//例如:打开http://www.baidu.com网站,大小为300px * 200px,无菜单,无工具栏,无状态栏,有滚动条窗口:
<script type="text/javascript"> window.open('http://www.baidu.com','_blank','width=300,height=200,menubar=no,toolbar=no, status=no,scrollbars=yes')
</script>

积分系统文件上传之FormData对象
querySelector
HTML5向Web API新引入了document.querySelector以及document.querySelectorAll两个方法用来更方便地从DOM选取元素,功能类似于jQuery的选择器
两个方法使用差不多的语法,都是接收一个字符串参数,这个参数需要是合法的CSS选择语法。

element = document.querySelector('selectors');
elementList = document.querySelectorAll('selectors');
[追根溯源](http://www.cnblogs.com/Wayou/p/html5_web_api_queryselector.html)
element = document.querySelector('div#container');//返回id为container的首个div
element = document.querySelector('.foo,.bar');//返回带有foo或者bar样式类的首个元素

HttpPostedFile

供对客户端已上载的单独文件的访问
对于客户端已上载的文件,最好先保存到服务器,再访问;而不是直接访问
HttpPostedFile file = Request.Files[0]; 变量file只是对文件的引用,对file的任何操作都直接影响到已经上载的文件。
使用StreamReader 读取文件后,要调用Close方法关闭文件流,否则SaveAs相同文件名时,提示文件被占用

相关文章