获取 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 ...
随机推荐
- How to Catch Ctrl-C in Shell Script
ref: https://stackpointer.io/script/how-to-catch-ctrl-c-in-shell-script/248/ #!/bin/sh # this func ...
- Centos 7 查看电池电量信息
而不像 ubuntu 在 /proc/acpi/battery/BAT 中. 其中 capacity 参数就是当前电脑的剩余电量的百分比信息了
- Tensorflow学习笔记——安装和运行
参考的资料: 1.官网 2.tensorflow官方文档中文版 安装的是Python 2.7; CPU support (no GPU support),版本是1.1 pip install tens ...
- Android样式的开发:shape篇
转载请注明:转载自Keegan小钢并标明原文链接:http://keeganlee.me/post/android/20150830微信订阅号:keeganlee_me写于2015-08-30 And ...
- java 多线程并发 synchronized 同步机制及方式
2. 锁机制 3. 并发 Excutor框架 4. 并发性与多线程介绍 1. synchronized 参考1. synchronized 分两种方式进行线程的同步:同步块.同步方法 1. 方法同步 ...
- Excel 保护工作表
1.选取整张表格,格式--设置单元格格式--锁定状态 2.将用户可编辑区域解锁 3.在审阅--保护工资表,设置除第一行不选,其他全选,添加密码保护,确定
- (转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解
使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解 本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创 ...
- mui---子页面主动调用父页面的方法
我们在做APP的时候,很多时候会有这样的功能需求,例如:登录,充值,如果登录成功,或充值成功后,需要更改当前页面以及父页面的状态信息,就会用到在子页面调用父页面的方法来实现:在子页面刷新父页面的功能. ...
- HTTP协议中GET和POST方法的区别
转载 通常的理解 w3schools关于这个问题的解答:HTTP 方法:GET 对比 POST 列出了一般的理解: 方法 GET POST 后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数 ...
- HTTP协议(web开发)
HTTP协议 HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数 ...