【前端项目笔记】原生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

相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
778 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
JavaScript 前端开发 API
|
11月前
|
编解码 JavaScript 前端开发
如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
3330 0
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
683 8
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
15484 23
|
JavaScript 前端开发
JavaScript类型判断
JavaScript类型判断
274 0
JavaScript类型判断
|
JavaScript 前端开发
JavaScript专题之类型判断(下)
JavaScript专题系列第五篇,讲解更加复杂的类型判断,比如 plainObject、空对象、类数组对象、Window对象、DOM 元素等
297 0
JavaScript专题之类型判断(下)
|
JSON JavaScript 前端开发
JavaScript专题之类型判断(上)
JavaScript专题系列第四篇,讲解类型判断的各种方法,并且跟着 jQuery 写一个 type 函数。
261 0
JavaScript专题之类型判断(上)
|
JavaScript 前端开发 存储

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1234
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    553
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    427
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    428
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    539
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    715
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1388
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    308
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1159
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    496