vue element-ui Upload 上传文件图片再次封装

本文介绍如何对Vue中的Element-UI Upload组件进行二次封装,创建名为UploadFile的自定义组件,用于实现更便捷的文件和图片上传功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、添加组件名UploadFile

<template>

  <div class="upload-container">
    <el-dialog :visible.sync="dialogVisibleImg" :title="ImgName"  append-to-body="true">
      <img width="100%" :src="dialogImageUrl" alt="">
    </el-dialog>
    <el-upload :class="[disabledInput? 'upLoadShowNone':'']"
               class="upload-demo"
               :accept="accept"
               :action="UploadUrl()"
               :multiple="multiple"
               :on-remove="handleRemove"
               :on-success="handleSuccess"
               :on-preview="handlePictureCardPreview"
               :disabled="disabledInput"
               list-type="picture"
               :file-list.sync="fileList">
      <el-button :size="size" :type="type"  icon="el-icon-upload" :plain="plain">
        {
  
  {btnMSg}}
      </el-button>
      <!--<el-button size="small" type="primary" >点击上传</el-button>-->
      <!--<div 
### 实现 Vue2 中基于 Element-UI文件上传Vue2 项目里集成 Element-UI 来完成文件上传功能,主要依赖于 `el-upload` 组件。此组件提供了丰富的配置选项以及事件处理机制以便开发者灵活控制文件的选择、预览和上传过程。 #### 安装并引入 Element-UI 为了能够在项目中使用 Element-UI 提供的各种 UI 组件,需先安装该库,并将其全局注册至应用实例内[^2]: ```javascript // main.js import Vue from 'vue'; import App from './App.vue'; // 引入整个 Element-UI 库及其样式资源 import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.config.productionTip = false; // 使用插件形式挂载 Element-UIVue 上下文中 Vue.use(ElementUI); new Vue({ render: h => h(App), }).$mount('#app'); ``` #### 创建文件上传页面 接下来定义一个简单的 HTML 结构用于展示文件上传按钮和其他必要的交互元素。在此基础上利用 `el-upload` 组件的相关属性定制化需求特性,比如指定 action URL(服务器接收地址)、设置文件列表显示模式等[^1]。 ```html <template> <div class="upload-demo"> <!-- el-upload 组件 --> <el-upload :action="uploadUrl" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :before-upload="beforeAvatarUpload" :file-list="fileList" multiple> <i class="el-icon-plus"></i> </el-upload> <!-- 图片预览对话框 --> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> </div> </template> <script> export default { data() { return { uploadUrl: '/api/upload', // 假设这是你要发送文件的目标URL fileList: [], // 已经上传成功的文件列表 dialogImageUrl: '', // 当前正在查看的大图链接 dialogVisible: false, // 控制大图弹窗可见状态 }; }, methods: { handleRemove(file, fileList) { /* 移除图片时触发 */ }, handlePictureCardPreview(file) {/* 预览图片时调用*/}, beforeAvatarUpload(file) {/* 文件上传之前做一些校验*/} } }; </script> ``` 上述代码片段展示了如何创建一个多选图片卡片样式的文件选择器,并允许用户点击缩略图放大查看所选图像。同时实现了基本的增删操作回调函数框架结构。 #### 处理文件上传逻辑 实际开发过程中还需要关注具体的业务场景,例如验证待传文件大小/类型合法性、监听进度变化通知前端界面更新、捕获异常情况给出友好提示等等。这些都可以借助 `el-upload` 自带钩子方法轻松搞定[^3]。 对于某些特殊情形下的自定义行为,则可能涉及到手动发起 HTTP 请求向服务端传递二进制流数据。此时可以考虑借用 axios 或者原生 Fetch API 构建 FormData 对象封装所需参数再执行 POST 方法提交给后台接口解析处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值