// 将base64转换为blob
dataURLtoBlob (dataurl) {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let bstr = atob(arr[1]) // .replace(/%0A|\s/g, '')
console.info('-----------123---------')
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new Blob([u8arr], { type: mime })
},
// 将blob转换为file
blobToFile (theBlob, fileName) {
theBlob.lastModifiedDate = new Date()
theBlob.name = fileName
return theBlob
},
getBase64Mock () {
return {
'base64': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAAA2CAYAAACx+8n+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJVSURBVHhe7ZjBauMwEED3q/fDetp/yL2nHnNYH3xpwNBAUD2yHcv2xFbDoGjKe/AoJJIbw+tE9Z8A4BTiBbcQL7iFeMEtxAtuIV5wC/GCW4gX3EK84BbiBbcQL7iFeMEtxAtuIV5wC/GCW4gX3FJVvH///cdfrDXEi8W0hnixmNYQLxbTGuLFYlpDvFhMa4gXi2kN8WIxrSFeLKY1xJvj+1fowjWctPdWni4hNOfkNdl7/QpvyZpJWZtL134me7vQaJ/nfA3h0i1fq0hriDfH7HinqOTnDmPMy9CHPYvwJ/soiXcL8eaYG+8mns/wcX28b473cewxWuJVId4cs+KVUFdf77JvJ6YYbyvXHknWvrW3+4QmXh3izTHGq3ELH+/jGgmnp2u7GPERMnE35+PxGsIiVjXeHJLPV4HWEG+Oh5NXYrqF5nJbRHa67E/rGG+/5s568kb6ANvMyVu51hBvjkfx9u83fVwS3BzZ4+k4rVlO3uHYIWz+acs9NlSuNcSb4+HkHVzGq7i6zubYEJ0iTn7fj44NdR0VUq0h3hyfiVfOr+nz3XiNZVj3eON7M4eTV9arz44lfOJ9CdoNV+Ez8YoScE9zHiblOkp98iZT9cHTBtmnP1Ug3peh3XAVPhvvaIxN2T+8nsf9usoEnyXel6HdcHFXX+HHzLHsnnmVPwB98iomk3d/D/G+DO2G8fdoDfFiMa0hXiymNcSLxbSGeLGY1hAvFtMa4sViWkO8WExriBeLaU1V8QL8BOIFtxAvuIV4wS3EC24hXnAL8YJbiBecEsI3JvIyp/Bd34cAAAAASUVORK5CYII=',
'key': '202172395245566',
'fileName': '66' + Math.random() + '.jpg'
}
},
base64UpFile (ctx, next) {
let base64Arr = [this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock(),
this.getBase64Mock()
]
ctx.base64Arr = base64Arr
ctx.index = 0 base64Arr.forEach(item => {
let formData = new FormData()
let blob = this.dataURLtoBlob(item.base64)
let file = this.blobToFile(blob, item.fileName)
formData.append('file', file, item.fileName) this.$Spin2.show('图片上传中')
axios.request({
method: 'post',
url: '/processFile/fileUpload',
data: formData
}).then(res => {
return res.data
}).then(res => {
// console.info('axios res', res) const params = {
reportingId: this.params.reportingId,
typeCode: this.typeCode1,
name: item.fileName,
url: res.data.split('-')[0]
}
this.$api('/process-api/file/saveOne', params).then(res => {
this.$Spin2.hide()
if (res && res.status === 20) {
// this.$Message.success('上传成功')
ctx.index = ctx.index + 1
next()
}
})
})
})
},
flushTree (ctx, next) {
if (ctx.index === ctx.base64Arr.length) {
this.$Message.success('上传成功')
this.$refs.part1.init()
}
},
base64ToFileHandle () {
const ac = this.$getAc()
ac.use(this.base64UpFile)
ac.use(this.flushTree)
ac.run()
},

base64 转文件上传的更多相关文章

  1. Base64文件上传(Use C#)

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,它是一种基于64个可打印字符来表示二进制数据的方法. 使用base64进行文件上传的具体流程是:前台使用js将文件转换为base64格 ...

  2. .netcore 文件上传转为base64位字符串

    .netcore文件上传Api接口,和正常的webForm提交类似,只是用postman测试接口时,记得给form表单命名,否则获取上传文件数量一直为0 后端代码 using System; usin ...

  3. vue + element 文件上传 并将文件转 base64

    当时有一个需求 是需要用到上传文件这个功能,并且需要将文件转为 base64 给到后台.网上找的全是啥图片转base64 肯定是因为这类需求比较常见.当时有点懵了.后面一想,都他娘是文件啊.然后就找到 ...

  4. 文件上传 和 base64编码

    base64编码 1.关于Base64编码  :  https://www.cnblogs.com/liyiwen/p/3814968.html (个人猜测),file表单发送文件,肯定是将文件转换为 ...

  5. 文件上传三:base64编码上传

    介绍三种上传方式: 文件上传一:伪刷新上传 文件上传二:FormData上传 文件上传三:base64编码上传 Flash的方式也玩过,现在不推荐用了. 优点: 1.浏览器可以马上展示图像,不需要先上 ...

  6. 前端element ui 文件base64加密字符串 上传

    <el-form-item label="附件" prop="attachment"> <el-upload :multiple=" ...

  7. chunkupload文件上传断点续传组件(java)

    chunkupload简介 chunkupload是一款基于java语言的断点续传组件,针对文件上传,非文件下载,集成方便,使用简单. 从整体上讲,chunkupload会对文件进行切片处理,每个切片 ...

  8. chunkupload 文件上传断点续传组件(java) - 正式发布

    chunkupload简介 chunkupload是一款基于java语言的断点续传组件,针对文件上传,非文件下载,集成方便,使用简单. chunkupload实现如下功能: ·  实现断点续传 ·  ...

  9. Selenium2学习-039-WebUI自动化实战实例-文件上传下载

    通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...

  10. SpringMVC 文件上传&拦截器&异常处理

    文件上传 Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.Spring 用 Jakarta Commons FileUpload ...

随机推荐

  1. C/C++ 常见数组排序算法

    本文介绍了几种常见的排序算法的实现,包括冒泡排序.选择排序.插入排序.希尔排序.归并排序和快速排序.冒泡排序通过多次遍历数组,比较并交换相邻元素,逐步将较小元素"浮"到数组顶端,时 ...

  2. C/C++ 实现简易HTTP服务器

    #include <stdio.h> #include <stdlib.h> #include <process.h> #include <WinSock2. ...

  3. C# 字符串转码后操作二进制文件

    String转码后写入二进制文件,读二进制文件进行解码返回. public class BinaryClass { /// <summary> /// 写二进制文件 /// </su ...

  4. 关闭表单验证/关闭控制台async-validator警告

    找到util.js node_modules -> async-validator -> es -> util.js 将console.warn(type, errors)注释 如果 ...

  5. Webpack基础学习(一) (未完结)

    一.Webpack介绍与基本使用 1.1.Webpack是什么? Webpack 是一个静态资源打包工具. 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去. ...

  6. Java执行Shell和传输文件

    特性: 多线程批量执行 多密码尝试 引入依赖: <dependency> <groupId>ch.ethz.ganymed</groupId> <artifa ...

  7. 教你用CSS实现表单部件

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用CSS编程实战案例,使用 列表标签完成一个下拉菜单样式的表单部件. 案例演示 运行代码后在浏览器弹出由 标签组成的下拉菜单样 ...

  8. 使用lvs实现ftp的负载均衡

    操作系统:CentOS6.5_x64 问题描述 使用lvs实现ftp的负载均衡 为了使模型足够简单,这里只实现了loadblance,HA并未实现,可以借助keepalived实现. 具体实现 hos ...

  9. NC13611 树

    题目链接 题目 题目描述 shy有一颗树,树有n个结点.有k种不同颜色的染料给树染色.一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同.请统 ...

  10. NC50243 小木棍

    题目链接 题目 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50.现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度.给出每段小木 ...