Html、Vue——本地文件上传弹框+读取本地文件内容

Vue2文件上传插件:拖放上传与对话框选择 在现代前端开发中,组件化已经成为了一种主流的开发模式。组件化不仅可以提高代码的复用性,还可以提升开发效率和可维护性。Vue.js作为当前热门的前端框架,其组件化设计思想是核心之一。Vue2中的组件是Vue实例的可复用单元,可以包含自己的HTML模板、数据和逻辑。自定义组件是将复用和维护性提升到新高度的关键。通过方法,开发者可以创建可复用的组件。而在组件间进行有效通信,是实现复杂应用所必需的。Vue2提供了多种方式实现组件间通信,如props、$emit、$refs、event bus、Vuex等。 阅读详情

一、前言

  最近在做页面时,想要实现在网页上获取本地文件的信息,在此记录一下实现方法。部分可以使用Hmtl原生方法和Jquery方法来实现相同效果,已做注释,不过主体是Vue实现。

  测试环境:谷歌浏览器——79.0.3945.88(正式版本) (64 位)

二、实现方法

1.显示本地文件上传弹框

1.1最原生的样式实现

代码如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
 
</head>
<body>
    <div>
        <input type="file" id="files">
    </div>
    <script>
    </script>
</body>
</html>

 效果:

注:这个只是出现弹框的基本样式,并不能获取所选择的本地文件信息

1.2 Vue实现

代码如下:

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>

    </head>
    <body>
        <div id="app">
            <input type="button" value="导入" id="fileImport" v-on:click="clickLoad" style="background: green; height: 80px; width: 100px; font-size: 28px;">
            <input type="file" id="files" ref="refFile" style="display: none" v-on:change="fileLoad">
        </div>
        <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
        <script>
            var app = new Vue({
                el: '#app',
                data: {

                },
                methods: {
                    clickLoad() {
                        // 下面三种方法实现效果一样
                        //方法一: 原生html
                        // document.getElementById('files').click();
                        // 方法二: jquery实现
                        // $("#files").click();
                        //方法三:Vue实现 
                        this.$refs.refFile.dispatchEvent(new MouseEvent('click'))
                    },
                    fileLoad() {
                        //获取读取的文件File对象 下面两种方法实现效果一样
                        //方法一:原生html获取
                        // const selectedFile = document.getElementById('files').files[0];
                        //方法二:Vue实现
                        const selectedFile = this.$refs.refFile.files[0];

                        var name = selectedFile.name; //选中文件的文件名
                        var size = selectedFile.size; //选中文件的大小
                        console.log("文件名:" + name + "大小:" + size);

                    }
                }
            })
        </script>
    </body>
</html>

效果:

点击导入

控制台显示

注:通过隐藏 type=“file” 的input按钮,可以实现自定义按钮的样式,忘掉那个原始的丑陋样式吧!

2.获取本地文件内容

代码如下:

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>

    </head>
    <body>
        <div id="app">
            <input type="button" value="导入" id="fileImport" v-on:click="clickLoad" style="background: green; height: 80px; width: 100px; font-size: 28px;">
            <input type="file" id="files" ref="refFile" style="display: none" v-on:change="fileLoad">
        </div>
        <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
        <script>
            var app = new Vue({
                el: '#app',
                data: {

                },
                methods: {
                    clickLoad() {
                        // 下面三种方法实现效果一样
                        //方法一: 原生html
                        // document.getElementById('files').click();
                        // 方法二: jquery实现
                        // $("#files").click();
                        //方法三:Vue实现 
                        this.$refs.refFile.dispatchEvent(new MouseEvent('click'))
                    },
                    fileLoad() {
                        //获取读取的文件File对象 下面两种方法实现效果一样
                        //方法一:原生html获取
                        // const selectedFile = document.getElementById('files').files[0];
                        //方法二:Vue实现
                        const selectedFile = this.$refs.refFile.files[0];

                        var reader = new FileReader();
                        reader.readAsText(selectedFile);
                        reader.onload = function() {
                            console.log(this.result);
                        }
                    }
                }
            })
        </script>
    </body>
</html>

效果:

打开刚刚那个test.txt文件,控制台显示如下:

保姆级教程:用torch.profiler给你的vLLM推理做个“全身体检”(附Perfetto可视化分析) 本文提供了一份详细的vLLM推理性能分析教程,通过torch.profiler和Perfetto工具链实现从数据采集到可视化分析的全流程。文章涵盖了环境配置、性能数据采集、trace文件解析以及Perfetto可视化分析,帮助开发者优化大模型推理服务的性能,显著降低计算资源消耗。 阅读详情

相关推荐

西电2023秋季机器学习复习提纲

西电2023秋季机器学习复习提纲,希望对学弟学妹有帮助

weixin_62083045的博客 5679

如何弹出文件选择器并且选择文件?

文件上传功能

ZZZZZZZZjy的博客 1839

最新CobaltStrike4.8/CobaltStrike4.9、CS4.9/CS4.8、 Windows/Linux/Mac版下载

Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用,分为客户端与服务端,服务端是一个,客户端可以有多个,非常适合团队协同作战,多个攻击者可以同时连接到一个团队服务器上,共享攻击资源与目标信息和sessions,可模拟APT做模拟对抗,进行内网渗透。 Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,

weixin_43167326的博客 7972

vue项目通过点击文字上传html文件,查看html文件

解决思路:新建一个上传组件,将它挪到页面之外。当点击文字时,手动触发上传组件,打开上传文件框。

donghua201的博客 556

C++五子棋人机对战

使用C++,开发五子棋人机对战,快速提升C++项目开发能力。

程序员Rock的博客 5万+

Avellaneda & Stoikov模型实战解析:如何动态调整做市策略参数

本文深入解析Avellaneda & Stoikov模型在动态调整做市策略参数中的应用,重点探讨库存状态、剩余时间、风险系数和订单深度等核心参数的实战技巧。通过加密货币市场的实际案例,展示如何根据市场波动和流动性动态调整参数,提升做市策略的盈利能力和风险控制水平。

weixin_29070861的博客 203

vue 项目中引入 本地html文件

vue 项目中引入 本地html文件

一只小孙鼠的博客 2768

【推荐100个unity插件】unity易于使用模块化设计的天空、体积云和天气系统——Enviro 3

Enviro 3是一款功能强大的Unity天空与天气系统插件,提供动态天空、体积云、天气模拟等丰富功能。安装时需将预制体拖入场景并配置主相机,URP支持需激活深度纹理和添加渲染特性。模块化设计允许自由添加/移除时间、光照、雾效等模块,并通过API控制参数。推荐配合色调映射(如ACES模式)获得最佳视觉效果。插件支持季节、温湿度模拟及闪电风暴等特效,适用于需要逼真环境渲染的Unity项目。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2094

vue form表单上传文件弹窗组件使用

vue form表单上传文件弹窗组件使用 先上图,后上码 创建组件createIdeaPop.vue 直接上代码啦 createIdeaPop.vue <template> <div class="modal-bg" v-show="showPop" @mousemove="modalMove" @mouseup="cancelMove"> <div class="modal-container"> <div cl

Mr_WoLong 1211

ARM功耗管理之功耗状态及功耗模式

思考:功耗状态?功耗模式?Core&Cluster&Device&SoC如何映射?

AI-安全-功耗 784

FTU电科院检测学习笔记-规划

如果写到最后,还非常的有动力和兴趣,可能会举出一些特定的例子来,但不保证一定是这样。

sixtome 1101

【html弹框拖拽和div拖拽功能】原生html页面引入vue语法后通过自定义指令简单实现div和弹框拖拽功能

这是html版本的。只是引用了vue的语法。这是很多公司会出现的一种情况,就是原生的页面,引入vue的语法开发这就导致有些vue上很简单的功能。放到这里需要转换一下以前写过一个vue版本的帖子,现在再加一个html版本的。

seeeeeeeeeee的博客 2173

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 988

Vue中读取本地图片实现预览和上传

先看效果图: 上面展示了两张从本地添加的准备上传服务器的预览图片,效果还不错吧,哈哈哈。 下面是该页面中紫色框的布局与实现代码,我想有些人也不喜欢HTML中默认的上传文件样式,实在辣眼睛: <template> <div class="uploadFile"> <!-- ul、li标签用于展示从本地添加的预览图片 --> <ul v-show="uploadImg.length!=0"> &lt

鸭绒的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

vue中读取本地文件内容

其实就是使用 FileReader对象,h5提供的异步api,可以读取文件中的数据。 <input @change="uploadCode($event)" type="file" id="fileInput"> // 导出 uploadCode(event) { //此处校验文件后缀 let file = event.target.files[0].name; // (利用console.log输出看file文件对象)json let num =

单飞吧的博客 7411

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

用html实现本地文件的上传

用html实现本地文件的上传,html实现文件上传,html实现文件上传解决方案,html实现文件上传思路,html实现文件上传实例,html实现文件上传源码,html实现文件分块上传,html实现文件分片上传,html实现文件夹上传,html实现文件加密上传,文件上传页面的前端可以选择使用一些比较好用的上传组件,例如百度的开源组件WebUploader,这些组件基本能满足文件上传的一些日常所需功能,如异步上传文件,文件夹,拖拽式上传,黏贴上传,上传进度监控,文件缩略图,甚至是大文件断点续传,大文件秒传。

weixin_45525177的博客 979

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

前端 实现浏览器读写本地文件(适配HTML,VUE,react)

vue实现浏览器读取本地文件,保存,另存为操作

yingbbai的博客 5100

vue + elementui 实现前端读取 excel 表格内容

vue + elementui 实现前端读取 excel 表格内容 最近公司有个需求,将excel表格内容展示到页面中,然后查看展示出来的内容没有问题,再将内容上传到服务端 网上有很多方法,但是楼主并未找到一个适合自己的(搜到的都不怎么好用),所以自己结合网上其他前辈的文章,总结了一份可以直接拿来使用的,希望能帮助到需要的人 我们要实现的效果是点击<el-button>按钮,然后选择excel文件,读取excel文件中的内容,并将内容展示到<el-table>表格中 以上就是我们

weixin_45253371的博客 9159

vue:word本地上传预览

html <input id="document" type="file" /> <div id="output" class="well"></div> js: require("./mammoth"); mounted() { document.getElementById("document").addEventListener("chang, ...

xilejie的博客 4546

vue上传图片并修改png图片颜色

通过以上步骤,已经成功地实现了在 Vue 中上传 PNG 图片并修改其颜色的功能。这个过程涵盖了文件上传、图像处理和 Canvas 操作,结合 Vue.js 框架,可以在客户端进行颜色修改。如碰到其他的问题 可以私下我 一起探讨学习如果对你有所帮助还请。

共同进步 1753

vue js xlsx 读取 本地 excel

最近在写一个人力资源管理系统,主要目的是将本地的excel文件读取解析,将有效数据传到后台。 下文介绍流程,文末附有参考文章。 1、安装npm包xlsx yarn add xlsx 2、结合上传组件和自己写的读取方法readXLSX,可以进行本地excel读取。 我使用的语言是vue,代码如下: <template> <div> <Upload acti...

solocao的专栏 5558

VUE实现视频,图片上传预览功能

最近在做一个视频上传预览功能,在获取文件绝对路径时,路径被浏览器的安全保护机制给改成了C:\fakepath\XXX,但是又需要文件的绝对路径才能完成预览功能。 首先先贴上效果图 HTML部分 添加video和input控件 <video :src="videoSrc" controls="controls" width="500" height="400"></video&g...

weixin_41895769的博客 8534

Vanilla JavaScript 和 Vue 中的 HTML <template>标签

HTML Template Tag in Vanilla JavaScript and Vue - DEV Communityhttps://dev.to/therealdanvega/html-template-tag-in-vanilla-javascript-and-vue-5eoo 在过去的几个月里,我一直在围绕 VueJS 和 Vanilla JavaScript 编写大量文档、教程和练习。就某些情况而言,我是Tech Elevator的课程开发人员,这是一个编码训练营,可在 14 周内教学生如

allway2的博客 645

Vue学习之路 - JS页面文件内容读取

直接上方法代码: <input type="file" class="file"> <el-button size="small" @click="readFile" >读取</el-button> click方法:      let fileselect = document.querySelector('input[type=f...

weixin_34144450的博客 1135

vue 附件上传获取附近内容_Vue实现附件上传功能

本文实例为大家分享了Vue实现附件上传的具体代码,供大家参考,具体内容如下前言前端 UI 是用的是 element-ui 的上传功能本文主要记录下代码,方便下次复制粘贴前端部分HTMLlimit: 限制文件个数 1 个on-remove: 移除附件时的钩子函数,主要就 console 输出下on-error: 用于处理上传异常后的处理,本人这主要用来关闭弹窗和全屏等待file-list: 绑定附件...

weixin_39617113的博客 188

vue项目读取本地文件

vue项目读取本地文件

weixin_44744234的博客 604
上一篇: git命令
下一篇: vue-router ——前端路由实现原理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值