vue 自定义图片文件上传结合elementui

简介: vue 自定义图片文件上传结合elementui

默认展示
在这里插入图片描述点击上传之后的样子 (在重新选择图片的时候直接点击图片即可)

在这里插入图片描述

<el-form label-width="120px" :model="formData" ref="formData">
      //show-file-list    是否显示已上传文件列表 
      //http-request    覆盖默认的上传行为,可以自定义上传的实现
      //handleAvatarSuccess 文件上传成功时的钩子
      //beforeAvatarUpload  上传文件之前的钩子
      <el-form-item :label="label" prop="url">
        <el-upload
          class="avatar-uploader"
          action="1"
          :show-file-list="false"
          :on-success="handleAvatarSuccess"
          :before-upload="beforeAvatarUpload"
          :http-request="upload"
        >
          <img v-if="formData.url" :src="formData.url" class="avatar" />
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
        </el-upload>
      </el-form-item> 
    </el-form>

data:

formData: { 
        url: "", //图片地址 
      },

上传封装的js uploadfile.js

import axios from 'axios'
import { getToken } from '@/utils/auth'//获取token的
const baseURL = process.env.VUE_APP_BASE_API  
export function UploadFile(url, FormData) {
  return axios.post(baseURL + url, FormData,
    {
      headers: {
        'Content-Type': 'multipart/form-data',
        'api-version': '1.0',
        'token': getToken()
      }
    }
  )
}
 

methods:

import { UploadFile } from "@/utils/uploadfile.js";
//上传的代码
upload(file) {
      var formdata = new FormData();
      formdata.append("file", file.file);
      UploadFile("/file/upload", formdata).then((res) => {
        console.log(res.data.data, "==res===");
        this.formData.url = res.data.data; 
        this.$message.success(res.data.message);
      });
    },
//文件上传成功时的钩子
 handleAvatarSuccess(res, file) {
        this.imageUrl = URL.createObjectURL(file.raw);
      },
      //上传文件之前的钩子
 beforeAvatarUpload(file) {
        const isJPG = file.type === 'image/jpeg';
        const isLt2M = file.size / 1024 / 1024 < 2;

        if (!isJPG) {
          this.$message.error('上传头像图片只能是 JPG 格式!');
        }
        if (!isLt2M) {
          this.$message.error('上传头像图片大小不能超过 2MB!');
        }
        return isJPG && isLt2M;
      }
相关文章
|
2月前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
140 64
|
2月前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
39 8
|
2月前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
3月前
|
JavaScript API
vue3知识点:自定义hook函数
vue3知识点:自定义hook函数
34 2
|
3月前
|
JavaScript UED
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
【10月更文挑战第5天】本示例展示了如何在 Vue.js 中使用 Element UI 组件实现动态添加和删除嵌套表单项。该表单包含设备信息、设备部位及其对应的任务列表,支持用户动态添加设备部位和任务,并提供相应的表单验证规则。
282 0
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
|
3月前
|
人工智能 JavaScript 程序员
vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
325 0
|
前端开发 JavaScript
VUE+ElementUI更改导航菜单选中背景颜色
VUE+ElementUI更改导航菜单选中背景颜色
19155 0
|
3天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
35 1
|
14天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
2月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
45 1
vue学习第一章

热门文章

最新文章