vue3+ts - element-plus封装上传文件图片组件

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

  近期做到的项目中有涉及到上传图片上传文件的需求,因为是pc管理后台,用到了element-plus框架,所以我也一起使用element-plus中的上传图片上传图片功能,并对它进行封装成一个组件,方便在多个地方使用。

一、效果图

1、上传文件、视频

在这里插入图片描述

2、上传图片

在这里插入图片描述

二、代码分析及全部代码

  在这里上传图片和文件是分成了两个组件进行封装的,因为项目需求要求不一致,所以分开了,大家使用时有需要的话可以将它们合并到一起。

1、上传文件相关代码
<template>
  <div class="upload_wrap">
    <el-upload
      v-if="!props.isDisableUpload"
      class="upload"
      ref="uploadRef"
      :file-list="waitFileList"
      :multiple="props.isMultiple"
      :limit="props.limitNum"
      :accept="props.acceptType"
      :auto-upload="false"
      :show-file-list="false"
      :disabled="props.isDisableUpload"
      :on-change="handleChange"
    >
      <div class="el-upload__text">
        <img src="@/assets/images/icon_upload.png" />
        <span>上传文件</span>
      </div>
    </el-upload>
    <div class="template_list">
      <div class="template" v-for="(item, index) in waitFileList" :key="index">
        <span>
          <img src="@/assets/images/icon_link.png" />
        </span>
        <span class="documentName">{
   
   {
   
    item.name }}</span>
        <span v-if="!props.isDisableUpload">
          <el-icon color="#000000a6" size="16" @click="removeFile(item)"
            ><Close
          /></el-icon>
        </span>
        <span v-if="isDownLoad" style="paddingleft: 5px">
          <img
            src="@/assets/images/icon_download.png"
            @click="handleDownLoad(item)"
          />
        </span>
      </div>
    </div>
    <span class="tips" v-if="!props.isDisableUpload"
      >支持{
   
   {
   
    acceptTypeDesc }};文件大小不能超过{
   
   {
   
    props.maxFileSize }}M</span
    >
  </div>
</template>

<script lang="ts" setup>
import {
   
    ref, watch } from "vue";
import {
   
    ElLoading, ElMessage } from "element-plus";
import {
   
    request } from "@/api/axios";
import {
   
    Close } from "@element-plus/icons-vue";
const emits = defineEmits(["fileSuccess", "fileRemove"]);
interface Props {
   
   
  acceptType?: string; // 上传文件类型
  acceptTypeDesc?: string; // 描述 - 上传文件类型
  isMultiple?: boolean; //   是否可批量上传
  limitNum?: number; // 允许上传文件的最大数量
  isDisableUpload?: boolean; // 是否禁用上传
  maxFileSize?: number; // 文件大小
  action?: string;
  fileList?: any; // 回显的文件
  isDownLoad?: boolean; // 是否可以下载
}
// 接收父组件传递过来的参数
const props = withDefaults(defineProps<Props>(), {
   
   
  acceptType: ".xls,.doc",
  acceptTypeDesc: "doc/xls",
  isMultiple: true,
  limitNum: 10,
  isDisableUpload: false,
  maxFileSize: 10,
  action: "/activity/resource/uploadFile",
  fileList: [],
  isDownLoad: false,
})<
elementui实现上传视频功能+预览 没有见过的奇葩上传视频功能,或不多说直接上代码 html: <el-form-item label="图片上传" prop="imgUrl"> <el-upload :action="picUrl" :headers="headers" :on-preview="handlePictureCardPreview" :file-list="imgList" 阅读详情

相关推荐

保姆级教程:用Vue3+Element Plus打造完美图片上传裁剪组件

本文提供了一份基于Vue3Element Plus图片上传裁剪组件封装教程。通过整合el-upload和vue-cropper,详细讲解了如何从零构建一个高可配置、企业级的组件,涵盖项目初始化、接口设计、核心功能实现以及高级优化实践,帮助开发者快速应对复杂的图片处理需求。

weixin_29009501的博客 299

el-upload 上传.pdf文件,并读取文件内容

el-upload 上传.pdf文件,并读取文件内容。

weixin_38822843的博客 2440

Element-plus el-upload 图片上传二次封装,支持一次上传多张图片

Element-plus el-upload 图片上传二次封装,支持一次上传多张图片

qq_33365152的博客 639

vue3 + elementPlus 上传图片

vue3 + elementPlus 上传图片上传单张和多张图片上传多张图片时,超过限制,隐藏上传按钮

thingir的博客 2万+

Vue3 Element-plus Upload 上传图片

组件上传之前会触发 beforeAvatarUpload 函数,但是该函数内部的操作会导致额外的请求发送到 http://localhost:5173/,从而导致 404 错误。官网中upload组件中action是可以直接写请求 URL,因为我在请求头中添加了租户id和token,如果直接将URL写入action中会报错‘‘缺少租户id’’,所有利用axios请求URL。点击上传图片时,请求后端接口(接口为封装好的reqUpload函数),将选中的文件作为接口的参数。

weixin_71403100的博客 1万+

Vue3结合Element Plus封装上传图片功能

Vue3封装Element Plus中的el-upload上传组件,实现图片的预览。

m0_67584973的博客 2380

vue3+element-plus 基于el-upload二次封装的ProUploadImg图片上传组件

ProUploadImg 是一个基于 Element Plus 封装图片上传组件,提供了图片预览、删除、大小限制、尺寸限制等功能。该组件支持单图和多图上传,并且提供了丰富的配置选项。

billershi的博客 1361

基于element-puls二次封装图片上传组件

>if (!isJPG) {ElMessage.error('上传图片只能是JPG格式!');console.log('自定义上传成功回调', response);ElMessage.success('图片上传成功!');</script>tip="点击上传自定义图标"/>tip="使用自定义上传接口"/>'X-Custom-Header': '自定义请求头'</script>

weixin_45636198的博客 973

vue3+Ts+element-plus+Upload+阿里云OSS前端直传组件二次封装

vue3+Ts+element-plus+Upload+阿里云OSS前端直传组件二次封装

qq_38902432的博客 4586

element plus 使用细节

table 表格自定义内容 select 显示的是value 分页和搜索 upload 使用 一个文件文件 el-dialog 使用 不要再 el-dialog 上加class el-drawer 使用 ElLoading(继续引入问题) 已经修复了? element plus 和 px2rem 不兼容 解决巨大的图标 element plus错位的图标

全网同名:PBitW,更多内容,可以搜索《普通前端进阶记》 1906

vue3+element Plus实现阿里云OSS图片上传

【代码】【无标题】

xy_9999的博客 459

(企业级)二次封装ElementPlus图片上传组件Vue3

二次封装图片上传组件

a_strong_pig的博客 1334

vue3+ts+elementplus二次封装组件前的准备

二次封装组件前的准备:背景介绍、统一规范、全局方法封装、系统配置

申小兮和林小兮的博客宝 296

vue3+ts通用管理后台练习项目

一个基于 RBAC 设计的通用后台管理系统,支持通过配置文件批量完成特定功能,如搜索、表格数据显示,导入、导出。项目中封装了大量通用组件,如表单、表格、Echarts 图表、头像上传、面包屑、左侧菜单等。

weixin_46463984的博客 2505

基于vue3elementPlus上传图片组件的二次封装

以上props中fileList跟文件的地址url必传,其他像大小,数量,文件类型,headers,照片墙盒子的宽高根据需要传入即可。最近再写后台的项目中,上传图片经常需要用到,特此写下一个组件

m0_72270036的博客 1798

7. vue3-element-admin 二次开发图文教程

本文介绍了vue3-element-admin框架的特点及使用指南。作为一款基于Vue3、Vite7和Element-Plus的企业级后台管理模板,它提供用户管理、权限控制、多租户等完整功能模块,配套Java/Node后端源码。相比传统框架,该方案采用最新前端技术栈,支持国际化、暗黑模式等特性,并持续更新维护。

极客星云-CSDN博客 2985

agile-admin完全指南:基于Vue3+Element-Plus打造高效多租户后台管理系统

agile-admin是一款基于Vue3Element-Plus构建的高效多租户后台管理系统框架,集成了动态路由、权限控制、国际化等企业级功能,堪称私活开发的神器利器。本文将为您全面介绍这个强大管理系统的核心特性、快速上手方法以及高级应用技巧。 ## 🌟 核心功能亮点 agile-admin作为一款现代化的后台管理框架,提供了丰富的企业级功能组件- **多租户架构**:通过[src/

gitblog_00716的博客 968

Vue3 - 超详细“纯前端“将文件上传到阿里云OSS对象存储,最新阿里云前端直传音频、视频、图片文件、office文档等任意文件vue3单个或批量从本地选择文件,秒传到阿里云oss无需后端接口!

vue3,阿里云oss存储,前端直传oss,上传图片/office文档/音视频/zip压缩包到阿里云oss,项目中上传文件到阿里云oss详细教程,如何将本地文件上传到阿里云OSS存储,纯前端实现阿里云OSS上传,纯前端直传至阿里OSS对象存储教程,如何解决上传文件到阿里云OSS本地环境调试出现跨域问题,直传阿里云oss跨域报错解决,前端直接上传文件到oss服务端,不经过后端直传,浏览器直接上传文件,阿里云oss上传sdk官方文档,阿里云错误,解决这个问题,上传很慢,一直签名失败,权限,不经过后端,纯前端直传

🏆 前端领域优质创作者 1万+
上一篇: vue3+ts - wangeditor 富文本编辑器的使用
下一篇: 报错 - If you are using vue-loader@>=10.0, simply update vue-template-compiler...
紫菀檀ss
博客等级 码龄10年 119粉丝 108原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值