当前位置: 首页 > news >正文

element plus实现点击上传于链接上传并且回显到upload组件中

在这里插入图片描述
摘要:

今天遇到一个问题:vue3使用elemnt plus的上传图片时,数据是从别人的系统导出来的商品,图片是http的形式的,并且商品很多的,一个一个下载下来再上传很麻烦的,所以本系统插件商品时图片使用http的链接上传的形式上传到自己的服务器!

在这里插入图片描述

<template><div class="upload-box"><el-uploadv-model:file-list="fileList":accept="fileType.join(',')":action="uploadUrl":before-upload="beforeUpload":class="['upload', drag ? 'no-border' : '']":disabled="disabled":drag="drag":http-request="httpRequest":limit="limit":multiple="true":on-error="uploadError":on-exceed="handleExceed":on-success="uploadSuccess"list-type="picture-card"><div class="upload-empty"><slot name="empty"><Icon icon="ep:plus" /><!-- <span>请上传图片</span> --></slot></div><template #file="{ file }"><img :src="file.url" class="upload-image" /><div class="upload-handle" @click.stop><div class="handle-icon" @click="handlePictureCardPreview(file)"><Icon icon="ep:zoom-in" /><span>查看</span></div><div v-if="!disabled" class="handle-icon" @click="handleRemove(file)"><Icon icon="ep:delete" /><span>删除</span></div></div></template></el-upload><div class="el-upload__tip"><slot name="tip"></slot></div><el-image-viewer v-if="imgViewVisible" :url-list="[viewImageUrl]" @close="imgViewVisible = false" /><div><el-input v-model="imageUrl" placeholder="请输入图片链接" /><el-button @click="uploadImage">上传</el-button></div></div>
</template><script setup>
import { ref } from 'vue';
import { ElMessage } from 'element-plus';const fileList = ref([]);
const fileType = ref(['image/jpeg', 'image/png']);
const uploadUrl = ref('https://your-upload-url.com');
const drag = ref(false);
const disabled = ref(false);
const limit = ref(5);const imgViewVisible = ref(false);
const viewImageUrl = ref('');
const imageUrl = ref('');const beforeUpload = (file) => {// 自定义文件上传前的处理逻辑return true;
};const httpRequest = (options) => {// 自定义文件上传请求const { file, onProgress, onSuccess, onError } = options;const formData = new FormData();formData.append('file', file);// 发起自定义上传请求fetch(uploadUrl.value, {method: 'POST',body: formData,onUploadProgress: (event) => {onProgress({ percent: (event.loaded / event.total) * 100 });},}).then((response) => response.json()).then((data) => {onSuccess(data);}).catch((error) => {onError(error);});
};const uploadError = (err, file, fileList) => {ElMessage.error('上传失败');
};const handleExceed = (files, fileList) => {ElMessage.warning(`当前限制选择 ${limit.value} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
};const uploadSuccess = (response, file, fileList) => {ElMessage.success('上传成功');
};const handlePictureCardPreview = (file) => {viewImageUrl.value = file.url;imgViewVisible.value = true;
};const handleRemove = (file) => {const index = fileList.value.indexOf(file);if (index > -1) {fileList.value.splice(index, 1);}
};const uploadImage = () => {const imageUrl = imageUrl.value.trim();if (!imageUrl) {ElMessage.error('请输入有效的图片链接');return;}// 创建文件对象const file = {name: 'image.jpg',url: imageUrl,raw: new File([], 'image.jpg', { type: 'image/jpeg' })};// 将文件对象添加到文件列表fileList.value.push(file);// 清空输入框imageUrl.value = '';
};
</script><style scoped>
.upload-box {display: flex;flex-direction: column;align-items: center;
}.upload {width: 300px;
}.no-border {border: none;
}.upload-empty {display: flex;justify-content: center;align-items: center;height: 100%;
}.upload-image {width: 100%;height: 100%;object-fit: cover;
}.upload-handle {display: flex;justify-content: space-around;margin-top: 5px;
}.handle-icon {cursor: pointer;display: flex;align-items: center;
}.handle-icon span {margin-left: 5px;
}
</style>

代码功能解释
文件上传:

  • 使用 el-upload 组件实现文件上传,支持拖拽、多选、限制文件数量等功能。
  • v-model:file-list 绑定文件列表,:accept 设置允许的文件类型,:action 设置上传接口地址。
  • :before-upload、:http-request、:on-error、:on-exceed、:on-success 等属性分别用于文件上传前的处理、自定义上传请求、上传失败、超过文件数量限制、上传成功等事件的处理。

文件预览:

  • 上传的图片可以预览,点击图片可以放大查看。
  • handlePictureCardPreview 方法用于显示图片预览。

文件删除:

  • 上传的图片可以删除,删除操作会触发 handleRemove 方法。

输入图片链接:

  • 用户可以通过 el-input 输入图片链接并点击“上传”按钮来上传图片。
  • uploadImage 方法将输入的图片链接转换为文件对象,并将其添加到文件列表中。

flowchart TD
A[开始] --> B[用户输入图片链接]
B --> C[点击上传按钮]
C --> D[调用 uploadImage 方法]
D --> E{输入链接是否有效?}
E -->|否| F[提示无效链接]
E -->|是| G[创建文件对象]
G --> H[将文件对象添加到文件列表]
H --> I[更新文件列表]
I --> J[显示上传成功的图片]
J --> K[结束]
F --> K

在这里插入图片描述
代码逻辑说明:

  1. 输入图片链接:用户在 el-input 输入框中输入图片链接。
  2. 点击上传按钮:用户点击“上传”按钮,触发 uploadImage 方法。

处理上传逻辑:

  1. 检查输入的链接是否有效。
  2. 如果链接无效,提示用户。
  3. 如果链接有效,创建文件对象并将文件对象添加到文件列表中。
  4. 更新文件列表:文件列表更新后,显示新上传的图片。
  5. 通过上述步骤和控制流图,可以清晰地理解链接上传功能的实现过程。用户输入图片链接并点击上传按钮后,系统会将链接转换
  6. 为文件对象并添加到文件列表中,最终显示上传成功的图片。

相关文章:

element plus实现点击上传于链接上传并且回显到upload组件中

摘要&#xff1a; 今天遇到一个问题&#xff1a;vue3使用elemnt plus的上传图片时&#xff0c;数据是从别人的系统导出来的商品&#xff0c;图片是http的形式的&#xff0c;并且商品很多的&#xff0c;一个一个下载下来再上传很麻烦的&#xff0c;所以本系统插件商品时图片使用…...

ELK日志分析系统部署

ELK日志分析系统 ELK指的是ElasticsearchLogstashKibana这种架构的缩写。 ELK是一种日志分析平台&#xff0c;在很早之前我们经常使用Shell三剑客&#xff08;一般泛指grep、sed、awk&#xff09;来进行日志分析&#xff0c;这种方式虽然也可以应对多种场景&#xff0c;但是当…...

驾校小程序:一站式学车解决方案的设计与实践

​​一、引言 随着移动互联网技术的飞速发展&#xff0c;人们的生活方式和消费习惯正在发生深刻变化。驾校作为传统的服务行业&#xff0c;也面临着数字化转型的迫切需求。驾校小程序作为一种轻量级的应用&#xff0c;能够为用户提供便捷、丰富的学车服务&#xff0c;成…...

【自然语言处理】BERT模型

BERT&#xff1a;Bidirectional Encoder Representations from Transformers BERT 是 Google 于 2018 年提出的 自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;它基于 Transformer 架构的 Encoder 部分。BERT 的出现极大提升了 NLP 任务的性能&#xff0c;如问答系…...

Android 添加如下飞行模式(飞行模式开和关、飞行模式开关菜单显示隐藏)接口

请添加如下飞行模式(飞行模式开关、飞行模式开关显示隐藏)接口: 飞行模式飞行模式开关com.action.airplankey: enable value:boolean true open the airplan false close the airplan关闭Intent intent = new Intent(); intent.setAction("com.action.airplan");…...

【Vue3】基于 Vue3 + ECharts 实现北京市区域地图可视化

文章目录 基于 Vue3 ECharts 实现北京市区域地图可视化1、引言2、项目初始化2.1、环境搭建2.2 、安装依赖2.3、项目结构 3、地图数据准备3.1、地图 JSON 文件获取&#xff08;具体的json数据&#xff09; 4、 组件开发4.1、Map 组件的设计思路4.2、基础结构实现4.3、核心数据结…...

【IC】什么是min period check

在 Synopsys Primetime 工具中可以检查.lib 文件中时钟输入的最小周期。想象这样一个场景&#xff0c;有一个设计 A&#xff0c;它有一个名为 clk 的时钟&#xff0c;并且该设计的 clk 周期被设定为一个值&#xff0c;比如 2 纳秒&#xff0c;即 500MHz。假设我们在进行静态时序…...

MyBatis入门之一对多关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学&#xff08;视频教学版&#xff09;&#xff08;第3版&#xff09;》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)&#xff08;第3版&#xff09;》(杨章伟&#xff0c;刘祥淼)【摘要 书评 试读】- 京东图书 …...

【Git 】Windows 系统下 Git 文件名大小写不敏感

背景 在 Windows 系统上&#xff0c;Git 对文件名大小写的不敏感性问题确实存在。由于 Windows 文件系统&#xff08;如 NTFS &#xff09;在默认情况下不区分文件名大小写所导致的。 原因分析 文件系统差异 Windows文件系统&#xff08;如 NTFS&#xff09;默认不区分文件名…...

【算法系列-二叉树】层序遍历

【算法系列-二叉树】层序遍历 文章目录 【算法系列-二叉树】层序遍历1. 算法分析&#x1f6f8;2. 相似题型&#x1f3af;2.1 二叉树的层序遍历II(LeetCode 107)2.2 二叉树的右视图(LeetCode 199)2.3 二叉树的层平均值(LeetCode 637)2.4 N叉树的层序遍历(LeetCode 429)2.5 在每个…...

我的世界方块改进版

引子 之前文章的磁性方块&#xff0c;通过3D打印实现&#xff0c;也批量打印了一些&#xff0c;下图就是一个小树 使用过程中&#xff0c;发现磁力感觉不紧&#xff0c;所以想改进一版。 正文 之前的结构如下&#xff1a;&#xff1a; 如果出现相邻的空隙间的磁铁相互作用&am…...

博客搭建之路:hexo增加搜索功能

文章目录 hexo增加搜索功能本地搜索弊端algolia搜索 hexo增加搜索功能 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 作为一个博客&#xff0c;没有搜索功能&#xff0c;如何在大批文章中找到自己想要的&#xff0c;那在hexo中如何增加搜索功能呢&#xff1f; search:path: sea…...

2024年最新互联网大厂精选 Java 面试真题集锦(JVM、多线程、MQ、MyBatis、MySQL、Redis、微服务、分布式、ES、设计模式)

前言 春招&#xff0c;秋招&#xff0c;社招&#xff0c;我们 Java 程序员的面试之路&#xff0c;是挺难的&#xff0c;过了 HR&#xff0c;还得被技术面&#xff0c;在去各个厂面试的时候&#xff0c;经常是通宵睡不着觉&#xff0c;头发都脱了一大把&#xff0c;还好最终侥幸…...

MybatisPlus入门(一)MybatisPlus简介

一、MyBatis简介 MyBatisPlus&#xff08;简称MP&#xff09;是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提高效率 - 官网&#xff1a;https://mybatis.plus/ https://mp.baomidou.com/ MyBatisPlus特性&#xff1a; - 无侵入&#xff1a;只做增强…...

QoS学习笔记

QoS业务分类 基于 DiffServ 服务模型的 QoS 业务可以分为以下几大类&#xff1a; 流分类和标记&#xff08;Traffic classification and marking&#xff09;&#xff1a;要实现差分服务&#xff0c;需要首先将数据包分为不同的类别或者设置为不同的优先级。将数据包分为不同…...

图(邻接矩阵)知识大杂烩!!(邻接矩阵结构,深搜,广搜,prim算法,kruskal算法,Dijkstra算法,拓扑排序)(学会一文让你彻底搞懂!!)

小伙伴们大家好&#xff0c;今天给大家带来图&#xff08;邻接矩阵&#xff09;的各种知识&#xff0c;让你看完此文章彻底学会邻接矩阵的相关问题。 1.邻接矩阵表示方法 1.1知识讲解 我们用一个二维数组arr来表示图。若图为有向图&#xff0c;其中arr【i】【j】w表示i号点和…...

Prometheus自定义PostgreSQL监控指标

本文我们将介绍如何在Prometheus中创建自定义PostgreSQL指标。默认情况下由postgres_export运行的查询可能不能满足用户需求&#xff0c;但我们可以创建自定义查询&#xff0c;并要求postgres_exporter公开自定义查询的结果。postgres_exporter最近被移到了Prometheus Communit…...

400行程序写一个实时操作系统(十六):操作系统中的调度策略

前言 在前面我们完成了Sparrow的临界区的代码&#xff0c;使用临界区&#xff0c;能够解决常见的并发问题&#xff0c;现在该完善我们的调度算法了。 调度算法在操作系统领域常常是热门的话题。不同的用途将会使用不同的调度策略。在本节&#xff0c;笔者将为大家介绍一些操作…...

从安灯系统看汽车零部件工厂的智能制造转型

在当今快速发展的制造业领域&#xff0c;汽车零部件工厂正面临着日益激烈的市场竞争和不断提高的客户需求。为了在竞争中脱颖而出&#xff0c;实现可持续发展&#xff0c;许多汽车零部件工厂纷纷踏上智能制造转型之路。而安灯系统作为一种重要的生产管理工具&#xff0c;在这场…...

SwiftUI(三)- 渐变、实心形状和视图背景

引言 在现代的应用的UI设计中&#xff0c;渐变和形状背景为界面带来了丰富的层次与视觉效果&#xff0c;而SwiftUI提供了一系列简单且强大的API&#xff0c;可以轻松实现这些效果。在这篇文章中&#xff0c;我们将介绍SwiftUI中的渐变、实心形状和视图背景的基础用法&#xff…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...