/**
* 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 的封装的更多相关文章

  1. 上传附件(图片base64)封装方法

    上传附件(图片base64)封装方法 php 上传附件,base64 项目中封装的接口: public function error($msg){ header("Content-type: ...

  2. 关于前端使用JavaScript获取base64图片大小的方法

    base64原理 Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充,输出字 ...

  3. cookie的设置、获取和删除封装

    在我们为了去完成数据储存,有时会用到cookie,简单封装一下cookie: <!DOCTYPE html> <html lang="en"> <he ...

  4. 函数return/获取元素样式/封装自己的库

    一:函数return <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&qu ...

  5. 界面信息获取库的封装,记有爱UI助手的诞生

    距离上次写文章已经过去了10个月,这次把我最近做的一个东西的一些心得写下来吧. 上一篇文章写了MSAA技术对于QQ界面信息获取的相关知识,近一段时间我把这个技术包括一些其他的功能做了一个封装并准备公开 ...

  6. 前端获取Base64字符串格式图片Ajax到后端处理

    前端获取到的Base64字符串格式图片一般都是经过处理的图片,例如:裁剪过后的,这里假设data为获取到的Base64字符串格式图片 Base64格式图片的格式为 “data:image/png;ba ...

  7. Android 获取地理位置信息 封装好了 直接用

    前言:花了一个早上研究了以下android获取经纬度,然后网上的参考资料都是杂七杂八,基本上都是过去几年的,现在我用 android6.0参照别人的结果发生好多错误,我的内心几乎是崩溃的.后来,不断百 ...

  8. 上传图片获取base64编码、本地预览

    一.读取文件的对象 — new FileReader()   上传图片接口参数有图片base64编码(数组, imgBase64List ),主要用到 读取文件的对象 [ new FileReader ...

  9. js获取base64格式图片预览上传并用php保存到本地服务器指定文件夹

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

随机推荐

  1. 关于Unity中NGUI的3D角色血条的实现

    首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...

  2. Rest风格理解

    之前一直不理解restful风格,今天终于理解了些(20170527) 正常我们在浏览器的地址栏中输入的地址很多都是发起的,发起的都是get请求 通过ajax可以设置put请求,F12查看浏览器请求头 ...

  3. [React] 05 - Route: connect with ExpressJS

    基础: 初步理解:Node.js Express 框架 参见:[Node.js] 08 - Web Server and REST API 进阶: Ref: 如何系统地学习 Express?[该网页有 ...

  4. vue跨域代理配置

    实际:http://a.com/b.php 代理:http://localhost/b.php 配置config/index.js proxyTable: { '/api': { target:'ht ...

  5. SpringBoot自定义错误信息,SpringBoot适配Ajax请求

    SpringBoot自定义错误信息,SpringBoot自定义异常处理类, SpringBoot异常结果处理适配页面及Ajax请求, SpringBoot适配Ajax请求 ============== ...

  6. git 误删分支恢复方法

    在使用Git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复. 首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复. 1.创建分支 abc git branc ...

  7. 【消灭代办】第1周 - 敏感词判断、图片206、parseInt

    11.16代办一:[敏感词判断] 代办描述: 一堆字符串组成的数组,给你一个字符串,让你去查找这个字符串是否在这个数组当中? 关键考点: 数组匹配,看一个数组中有没有这个字符串. 解决思路: 遍历数组 ...

  8. VS 开发必用插件

    C# outline --代码折叠 Indent Guides 虚线对齐 productivity power tools 功能集中在编辑.浏览以及其他常见的构造代码时会使用到的任务 Web Esse ...

  9. A - River Hopscotch

    Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully ...

  10. ie9 form submit 请求参数问题替代办法

    //隐藏表单 <input id="hdPeriod" name="period" type="hidden" value=" ...