【前端项目笔记】原生js上传文件及文件转换成base64、blob类型

简介: 项目中经常会用到上传图片上传视频等功能,由于后端nginx限制,经常要进行文件转化才能上传,大文件可能还要进行切片上传处理。

一.项目场景


项目中经常会用到上传图片上传视频等功能,由于后端nginx限制,经常要进行文件转化才能上传,大文件可能还要进行切片上传处理。


二.原生js实现上传功能的简单案例(上传图片)


1.html部分

<div class="about">
        <input type="file" accept=".png" id="files" style="display:none;">
        <img :src="imgSrc" alt="" @click="inputClick">
</div>


 2.js部分

inputClick () {
            // 触发上传文件的文件框
            document.getElementById('files').click();
            let that = this;
            document.getElementById('files').onchange = function (val) {
                that.imgfiles = val.target.files[0];
            }
            console.log(this.imgfiles);
        }


3.控制台打印结果

5143cf0985e041c9b2dabb02ae8814b3.png


三.将文件转化成base64、blob

1.base64:简单的来说base64就是一种二进制到文本的编译方式,base64不加密,浏览器加载快,但是他的大小要比原图片文件大,所以只有上传图片时建议大家转base64,视频文件的话就算了,低于50MB的视频大家也可以用base64。


getbase64 () {
            let reader = new FileReader();
            console.log(reader);
            reader.readAsDataURL(this.imgfiles);
            reader.onload = (e) => {
                this.imgSrcbase64 = e.target.result;
                console.log(this.imgSrcbase64);
            }
        }


打印结果:

5daa26a01ce445829cbe0a9a21f281be.png


2.Blob:Blob(Binary Large Object)表示二进制类型的大对象。blob经常被用作上传大文件,通过blob构造函数生成一个blob对象对文件进行处理,生成一个blob文件流,blob是加密的,这点和base64完全不同,它还可以用到切片,为了更直观的了解blob,废话不说了,我也不是太懂这玩意,直接上代码。

getblob () {
            let reader = new FileReader();
            reader.readAsArrayBuffer(this.imgfiles);
            reader.onload = (e) => {
                let data;
                if (typeof e.target.result === 'object') {
                    data = window.URL.createObjectURL(new Blob([e.target.result]));
                } else {
                    data = e.target.result;
                }
                this.imgBlob = data;
                console.log(this.imgBlob);
            }
        }


打印结果:

11d36a3e1fd6454db15a6a049bc58c5c.png

相关文章
|
14天前
|
前端开发 JavaScript 数据处理
前端新手指南:如何解决JavaScript导出CSV文件不完整的问题
【6月更文挑战第4天】在JavaScript中处理CSV文件时,需要特别注意一些特殊字符,例如逗号、双引号、换行符等。这些字符可能会影响CSV文件的解析,导致数据错乱。
49 0
|
10天前
|
前端开发 JavaScript 安全
高级前端开发需要知道的 25 个 JavaScript 单行代码
1. 不使用临时变量来交换变量的值 2. 对象解构,让数据访问更便捷 3. 浅克隆对象 4. 合并对象 5. 清理数组 6. 将 NodeList 转换为数组 7. 检查数组是否满足指定条件 8. 将文本复制到剪贴板 9. 删除数组重复项 10. 取两个数组的交集 11. 求数组元素的总和 12. 根据指定条件判断,是否给对象的属性赋值 13. 使用变量作为对象的键 14. 离线状态检查器 15. 离开页面弹出确认对话框 16. 对象数组,根据对象的某个key求对应值的总和 17. 将 url 问号后面的查询字符串转为对象 18. 将秒数转换为时间格式的字符串 19.
20 3
高级前端开发需要知道的 25 个 JavaScript 单行代码
|
4天前
|
JavaScript 前端开发 API
探讨JavaScript动态添加HTML文件的技术
探讨JavaScript动态添加HTML文件的技术
9 1
|
4天前
|
设计模式 前端开发 JavaScript
关于写好前端JS代码的一些建议
关于写好前端JS代码的一些建议
17 2
|
8天前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
9天前
|
JavaScript 前端开发 开发者
介绍如何在WebStorm中调试JavaScript文件
介绍如何在WebStorm中调试JavaScript文件
11 1
|
13天前
|
JavaScript
原生JS实现全选、全不选
原生JS实现全选、全不选
|
13天前
|
XML 前端开发 JavaScript
前端简介(HTML+CSS+JS)
前端简介(HTML+CSS+JS)
|
15小时前
|
移动开发 JavaScript 前端开发
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
|
1天前
|
JavaScript 前端开发 网络协议
如何快速搭建一个 Node.JS 项目并进入开发?
如何快速搭建一个 Node.JS 项目并进入开发?