# 文件上传进度提示的多种实现方式
## 1. html5 File API实现带有进度提示的文件上传
现在大部分网站用Flash实现文件上传进度，还有些网站继续用`html <form>`的`enctype=multipart/form-data`，但需要服务器端的支持。因此，H5的file相关api是不二之选。
### 1.1 XMLHttpRequest Level 2新特性
[访问 XMLHttpRequest Level 2](https://www.w3.org/TR/XMLHttpRequest2)
>1. 处理字节流，如File，Blob，FormData对象
>2. 上传、下载进度事件
>3. 跨站点请求
>4. 允许创建匿名请求
>5. 可以设置请求超时

### 1.2 客户端可获取的信息
根据XHR2新特性，目前不依赖服务器能够客户端提供如下信息：
1. 当前文件信息(文件名、大小、类型)
2. 上传百分比进度条
3. 上传速度、上传带宽
4. 上传完成时间估算
5. 已上传文件大小
6. 服务器端响应(上传过程中页面未发生跳转等任何变化，可用此信息处理上传事件)

### 1.3 Html5 Progress Event
>total - 总字节数
loaded - 已上传总字节数
lengthComputable - 可计算的已上传字节

### 1.4 浏览器支持情况
Firefox 4.0 beta 6
Chrome 6
Safari 5.02
IE 9 Beta 和 Opera 10.62 不支持

### 1.5 Demo

## 2 服务器计算IO流，客户端轮询
## 3 参考文章
[参考文章](http://www.matlus.com/html5-file-upload-with-progress/)