js触发input的打开文件选择器,将本地图片回显以及上传

js触发input的打开文件选择器,将本地图片回显以及上传


你可以通过以下 JavaScript 代码触发文件选择器:这里的场景不是通过input标签来触达的文件选择器,这样对于样式较为复杂的上传可以在html结构上保持清爽愉快,不用多添加一个input标签。

选择文件

  • 示例demo,理解思路
// 创建一个input元素
var input = document.createElement('input');
// 设置input类型为file,表示文件选择器
input.type = 'file';
// 添加change事件监听器,当用户选择文件后触发
input.addEventListener('change', function (event) {// 获取选择的文件var selectedFile = event.target.files[0];// 在这里你可以处理选择的文件,比如读取内容或上传到服务器等console.log('选择的文件:', selectedFile);
});
// 触发文件选择器
input.click();

这里的file,可以将一切媒体的类型的文件可以上传,但是有些场景只是上传图片,如何通过简单的方法实现呢?

input.accept 是用于指定文件选择器接受的文件类型的属性。通过设置 accept 属性,你可以限制用户只能选择特定类型的文件。这在需要特定类型文件的应用场景中很有用,例如只允许选择图像文件或文档文件。

实例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>File Input Example</title>
</head>
<body><label for="fileInput">选择图像文件:</label><input type="file" id="fileInput" accept="image/*"><script>// 添加change事件监听器,当用户选择文件后触发document.getElementById('fileInput').addEventListener('change', function (event) {// 获取选择的文件var selectedFile = event.target.files[0];// 在这里你可以处理选择的文件,比如读取内容或上传到服务器等console.log('选择的文件:', selectedFile);});</script></body>
</html>

在上述示例中,文件选择器只允许选择图像文件,因为 accept 属性设置为 image/*。你可以根据需要更改 accept 属性的值来限制文件类型。

  • ok,那么这里的 accept 属性,我们只需要放在js代码中开始即可。例如只需要筛选图片,其实的文件被筛选掉。
const fileInput = document.createElement('input');  
fileInput.type = 'file';  
fileInput.accept = 'image/gif,image/jpeg,image/jpg,image/png'; 
fileInput.click(); //or 
fileInput.accept = 'image/*'
//但是大批量筛选会延时打开文件选择器弹窗的速度,所以只需要指定格式的即可

显示文件

在前端,input 标签的文件选择器在用户选择文件后会触发change事件。你可以通过监听这个事件来获取用户选择的文件。当用户在文件选择框中选择一个文件并确认选择时,change 事件将被触发。

fileInput.addEventListener("change",()=>{// console.dir(fileInput);const windowURL = window.URL || window.webkitURL; // 兼容操作let fileObj = fileInput.files[0];let url = windowURL.createObjectURL(fileObj);this.$refs['photo1'].src=url;//等待dom图片加载完毕,即可释放资源。this.$nextTick(()=>{URL.revokeObjectURL(url);})})},

上传

格式为表单上传。

// 上传图片封装axios函数
export const POST_ADDPIC = (data)=>{return http.post(API.ADDPIC,data,{headers: {'Content-Type': 'multipart/form-data'},});
}
//使用
const form = new FormData()
form.append('data', file);//let file = fileInput.files[0];
form.append('id',id);
POST_ADDPIC(form).then((res)=>{//TODO}).catch((err)=>{//TODO});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java web mvc-08-Grails 入门介绍

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

R语言【taxa】——is_*():检查对象是否为某个类

is_classification(x) 检查对象是否为 classification 类。 is_internode(x) 检查每个分类单元是否为节间。节间是指一个分类单元恰好有一个上级分类单元和 一个下级分类单元。这些分类群可以在不丢失它们之间的关系信息的情况下被移除。 x <- taxonomy(c(Carnivora, Felid…

设置Django中的静态文件

在Django中&#xff0c;静态文件&#xff08;如CSS、JavaScript、图片等&#xff09;是网站开发中不可或缺的一部分。为了让网站能够正确加载这些静态文件&#xff0c;我们需要在Django中进行相应的设置。 首先&#xff0c;我们需要在settings.py文件中设置STATIC_URL&#xf…

Unity通用渲染管线升级URP、HDRP

Unity通用渲染管线升级URP、HDRP 一、Build-in Pipline升级到 URP 一、Build-in Pipline升级到 URP 安装URP包 升级所有材质&#xff08;升级完成后材质会变成紫红色&#xff0c;Shader丢失&#xff0c;此为正常现象&#xff09; 创建 UniversalRenderPipelineAsset 配置文…

Pillow图像处理:从零开始的奇妙之旅

图像处理&#xff0c;就像是一场神奇的冒险&#xff0c;让我们的照片变得更有趣、更生动。而在这个冒险的旅途中&#xff0c;Pillow就如同一位魔法师&#xff0c;为我们开启了无尽的可能性。无论你是刚刚踏入图像处理领域的小白&#xff0c;还是已经略有基础的程序员&#xff0…

深入Kafka broker

一、协议设计 颗粒度, PRODUCE和FETCH中支持topic,partion等层级的颗粒度;测试友好, 基于session_id和epoch确定一条拉取链路的fetch session;全量增量结合, FetchRequest中的全量拉取和增量拉取;基本结构: headerbody。 常见header: api_key, api_version, corelation_id, cl…

opencv中的几个重要函数

对于我们经常使用python的同学&#xff0c;尤其还习惯使用numpy库&#xff0c;突然上手opencv c时&#xff0c;就会感觉想要一个结果&#xff0c;python一行代码搞定&#xff0c;但是c却无处下手&#xff0c;因此特总结遇到的几个重要opencv函数&#xff0c;方便能够快速获取跟…

8.前端--CSS-显示模式

元素的显示模式 元素显示模式就是元素&#xff08;标签&#xff09;以什么方式进行显示&#xff0c;比如<div>自己占一行&#xff0c;比如一行可以放多个<span>。 1.块元素 常见的块元素 常见的块元素&#xff1a;<h1>~<h6>、<p>、<div>、…

SQLyog的使用

快捷键功能备注对象浏览器窗口及查询执行快捷键  F5刷新对象浏览器窗口 CtrlB 切换鼠标光标焦点至对象浏览器窗口&#xff1b; F8执行当前行SQL&#xff0c;并允许编辑查询结果 F9执行查询/执行当前行的SQL 连接  CtrlM创建新连接 CtrlN以当前连接属性创建新连接 Ctr…

如何预防服务器IP被劫持,危害有什么?

服务器IP被劫持是一种严重的网络安全问题&#xff0c;攻击者通过篡改服务器的IP地址&#xff0c;将网络流量重定向到恶意服务器或网站&#xff0c;导致用户无法正常访问目标服务器&#xff0c;并可能面临数据泄露、恶意软件感染等安全风险。了解服务器IP被劫持的危害和预防措施…

理解Java中的AQS

一、定义 AQS:AbstractQueuedSynchronizer(抽象队列同步器)&#xff0c;是一个用于构建锁和同步器的抽象的同步框架。AQS 提供了一种可扩展的基础&#xff0c;允许开发者实现各种形式的同步控制机制。 例如&#xff1a;独占锁&#xff08;ReentrantLock&#xff09;、共享锁&a…

Jumpserver中安装httpx

查看已安装的包 pip freeze # python -V # Python 2.7.5安装anyio 刚开始直接pip install httpx&#xff0c;未设置版本号&#xff0c;因已有idna2.7&#xff0c;所以出现版本不兼容的现象 anyio 3.0.0 requires idna>2.8, but you have idna 2.7 which is incompatible.…

船的最小载重量-算法

说明&#xff1a;题解完全是从leetCode上拉下来的&#xff0c;在这里只是作为一个备份&#xff0c;怕之后找不着了。同时也分享给大家&#xff0c;这个题目用了一个我之前从未遇到的思路。 原题&#xff1a;船的最小载重量-leetCode1101 题目&#xff08;看懂题目了吗&#xff…

STM32 I2C的多设备通信协议设计与实现

在STM32微控制器上使用I2C进行多设备通信需要设计合适的通信协议&#xff0c;以确保每个设备能够正确识别并响应主设备的命令。在本文中&#xff0c;我们将针对STM32的I2C多设备通信协议进行设计与实现&#xff0c;并展示如何使用代码来实现此协议。 要实现STM32的I2C多设备通…

JavaScript快速入门四

文章目录 事件事件的绑定事件监听机制常见事件点击事件焦点事件加载事件鼠标事件键盘事件选择和改变表单事件 事件 概述&#xff1a;某些组件被执行了某些操作后&#xff0c;触发了某些代码的执行 事件的绑定 方法一&#xff1a;直接在 HTML 标签上&#xff0c;指定事件的属性…

自定义通用返回对象

目的&#xff1a;给返回对象补充一些信息&#xff0c;告诉前端这个请求在业务层面上是成功还是失败&#xff0c;以及具体的描述信息。 我们需要自定义错误码&#xff08;因为前端的HTTP状态码默认的值比较少&#xff09;和正常错误返回类。 ErrorCode &#xff1a; package …

python基础 - 变量

知识点1&#xff1a; print函数里可以用英文逗号, 分隔字符和变量&#xff0c;字符串要用双引号引起来&#xff0c;而变量名不用引起来&#xff0c;同时print的时候也可以直接写数学运算公式 知识点2&#xff1a; python里和用户交互的函数是input&#xff0c;但它有一个特点&…

街机模拟游戏逆向工程(HACKROM)教程:[18]分析的思路

在之前的文章,我们已经提及,得到玩家的血量,可以用这个分析出哪些想要的东西: 1、被敌人攻击 - 得到敌人某个技能的攻击力,自身的防御力。 2、被队友攻击 - 得到队友的攻击力。 3、被道具击中 - 得到道具的攻击力。 4、使用扣血技能 - 得到使用技能扣除的血量值。 5、…

pikachu_csrf通关攻略

csrf&#xff08;get&#xff09; 打开pikachu靶场&#xff1a; 1. 根据提示给的账户密码进行登录 2. 打开代理拦截数据包将拦截数据发送到已打开的burp中&#xff1a; 修改数据进行发包&#xff1a; 从上面的url可见&#xff0c;修改用户信息的时候&#xff0c;是不带任何不…

网易云音乐JS逆向分析

文章目录 页面分析抓包分析JS逆向分析代码编写 页面分析 先来分析一下页面 当我们点击播放按钮的时候&#xff0c;音乐开始播放。实际上这个逻辑背后的原理是这个按钮后面对应的是一个url&#xff0c;这个地址是通过ajax来进行局部刷新的。 所以我们可以通过抓包工具&#…