上传进度
前台
版本一
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和POST2次请求- 对于通用服务器,我们不用担心,他们会自己进行处理
- 对于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 |
|