上传进度
前台
版本一
HTML5
标签自带的进度条标签<meter>
上传进度
oAjax.upload.onprogress
上传进度.html
1 |
|
版本二
自己创建进度条标签
绑定事件监听
oAjax.upload.addEventListener
上传进度2.html
1 |
|
版本三
- 下载进度
oAjax.onprogress
下载进度.html
1 |
|
版本四
- 下载进度绑定事件监听
document.addEventListener
下载进度2.html
1 |
|
后台
- 解决跨域,判断请求头中是否携带
req.headers['origin']
字段
express_server.js
1 | const express=require('express'); //主体 |
上传进度条实现注意
oAjax.upload.onprogress
必须放在oAjax.send(data)
前面- 服务器必须能处理
OPTIONS
请求,oAjax
加了upload
会发送OPTIONS
和POST
2次请求- 对于通用服务器,我们不用担心,他们会自己进行处理
- 对于NodeJS服务,使用
express
框架,使用server.use
拖拽上传
- 拖拽松手事件
drop
- 绑定事件监听阻止默认行为,
ev.preventDefault()
- 按钮阻止默认行为,
return false
- 绑定事件监听阻止默认行为,
- 获取文件
ev.dataTransfer.files
- 数据封装,使用
FormData
封装文件数据 - 发送,
oAjax.send(data)
文件拖拽.html
1 |
|
读取文件FileReader
前台
版本一
- 文件读取 方法
reader.readAsDataURL(file)
可以将图片文件转换为base64
编码 - 传输数据可以通过二进制和
base64
来传输base64
可以把二进制数据表现成字符串- 只要能出现地址
src
的地方,都能用Base64
- 一般小图标不要引用地址,直接放个
base64
可以优化网络性能 - 维护麻烦,
base64
编码会把文件体积变大
- 当读取操作成功完成时调用
reader.onload
读取文件.html
1 |
|
版本二
- 判断文件类型,
file.type.startsWith('image/')
读取文件2.html
1 |
|
版本三
- 以二进制数据的形式存储数据,
reader.readAsArrayBuffer(file)
- 以字符串形式存储的二进制数据,
readAsBinaryString
- 图片(以及其他二进制数据),
readAsDataURL
- 将文件读取为文本,
readAsText
读取文件3.html
1 |
|
后台
将读取的文件入库
- 连接数据库
mysql.createPool
- 批量插入
express_server.js
1 | const express=require('express'); //主体 |
ajax版本
ajax2.0
携带有oAjax.upload
属性
ajax版本.html
1 |
|