获取 base64 的封装
/**
* 1. 如何实例化 const fileInput = await FileInput.init(fileInputEle, isMulFile)
*/
export class FileInput {
files = null
isMulFile = false
_isInit = false
constructor(_isInit, isMulFile, files) {
if (!_isInit) {
throw `FileInput 只能调用 init 方法实例化`
}
this.isMulFile = isMulFile
this.files = files
}
get file () {
const files = this.files
if (!files || files.length === 0) return null
return files[0]
}
static init(fileInputEle, isMulFile) {
return new Promise((resolve, reject) => {
fileInputEle.addEventListener(
'change',
function (e) {
this.files = e.target.files
const fileinput = new FileInput(true, isMulFile, files)
resolve(fileinput)
},
false
)
})
}
/**
* getBase64ByCb 和 getAndCreateObjectURL 没有封装私有索性,原因:
* 1. js 中没有保护属性,只能用静态属性来替代
* 2. FileInput 默认是针对单文件,需要扩展多文件的处理,所以保留这个两个方法
* 3. 多文件的处理,需要增加一个类 MulFileInput
*/
// 面向开发者的方法的命名
static _getBase64ByCb(file, cb) {
var reader = new FileReader()
if (file) {
// 图片base64
reader.readAsDataURL(file)
reader.onload = function (e) {
var base64 = reader.result
cb && cb(base64)
}
}
}
static _getAndCreateObjectURL = function (blob) {
if (window.URL) {
return window.URL.createObjectURL(blob);
} else if (window.webkitURL) {
return window.webkitURL.createObjectURL(blob);
} else {
return null;
}
}
// 面向使用者的方法命名
getFileUrl () {
return FileInput._getAndCreateObjectURL(this.file)
}
getSizeTypeNameObj () {
const file = this.file
const obj = {}
obj.name = file.name
obj.type = file.type
obj.size = file.size
return obj
}
getBase64 () {
const file = this.file
return new Promise((resolve, reject) => {
FileInput._getBase64ByCb(file, function (base64) {
resolve(base64)
})
})
}
// 去掉base64头
getDelStartBase64(base64) {
const newBase64 = replace(/data\:(.*?);base64\,/, '')
return newBase64
}
async getFileObj () {
const obj = this.getSizeTypeNameObj()
const base64 = await getBase64()
Object.assign(obj, {
base64
})
return obj
}
}
获取 base64 的封装的更多相关文章
- 上传附件(图片base64)封装方法
上传附件(图片base64)封装方法 php 上传附件,base64 项目中封装的接口: public function error($msg){ header("Content-type: ...
- 关于前端使用JavaScript获取base64图片大小的方法
base64原理 Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充,输出字 ...
- cookie的设置、获取和删除封装
在我们为了去完成数据储存,有时会用到cookie,简单封装一下cookie: <!DOCTYPE html> <html lang="en"> <he ...
- 函数return/获取元素样式/封装自己的库
一:函数return <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&qu ...
- 界面信息获取库的封装,记有爱UI助手的诞生
距离上次写文章已经过去了10个月,这次把我最近做的一个东西的一些心得写下来吧. 上一篇文章写了MSAA技术对于QQ界面信息获取的相关知识,近一段时间我把这个技术包括一些其他的功能做了一个封装并准备公开 ...
- 前端获取Base64字符串格式图片Ajax到后端处理
前端获取到的Base64字符串格式图片一般都是经过处理的图片,例如:裁剪过后的,这里假设data为获取到的Base64字符串格式图片 Base64格式图片的格式为 “data:image/png;ba ...
- Android 获取地理位置信息 封装好了 直接用
前言:花了一个早上研究了以下android获取经纬度,然后网上的参考资料都是杂七杂八,基本上都是过去几年的,现在我用 android6.0参照别人的结果发生好多错误,我的内心几乎是崩溃的.后来,不断百 ...
- 上传图片获取base64编码、本地预览
一.读取文件的对象 — new FileReader() 上传图片接口参数有图片base64编码(数组, imgBase64List ),主要用到 读取文件的对象 [ new FileReader ...
- js获取base64格式图片预览上传并用php保存到本地服务器指定文件夹
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
随机推荐
- hdoj:题目分类
基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1056.1058. ...
- Json Web Token(JWT)
Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(Si ...
- Zookeeper系列五:Master选举、ZK高级特性:基本模型
一.Master选举 1. master选举原理: 有多个master,每次只能有一个master负责主要的工作,其他的master作为备份,同时对负责工作的master进行监听,一旦负责工作的mas ...
- Java如何计数替换字符串中第一次出现的子字符串?
在Java编程中,如何拆分正则表达式和字符串? 以下示例演示如何使用Matcher类的replaceFirst()方法替换字符中指定的子字符串的首次出现. package com.yiibai; im ...
- 2 salt-masterless架构
minion无master的使用用法 需要更改minion配置文件的三个配置项 [root@linux-node2 ~]# vim /etc/salt/minion file_client: loca ...
- python利用lxml读写xml格式文件
之前在转换数据集格式的时候需要将json转换到xml文件,用lxml包进行操作非常方便. 1. 写xml文件 a) 用etree和objectify from lxml import etree, o ...
- dokcer使用--link 让容器相连
在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务.比如这么一种情况:我们需要一个容器来提供MySQL的数据库服务,而另外两个容器 ...
- Oracle数据库入门——sql语句和函数详解
一.oracle常用数据类型 一. 数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构 ...
- day_11py学习
''' 字典增加和删除 1.添加 xxx[新的key] = value 2.删除 del xxx[key] 3.修改 xxx[已存在的key] = new_value 4.查询 xxx.get(key ...
- Zabbix使用grafana展示图形
系统环境查看 官网下载grafana wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.0.1-1. ...