13 使用Vue + FormData + axios实现图片上传功能实战

63748e72dc314943857316f3b1f6a386.gif#pic_center

前言

上节回顾

上一小节中,我们添加了Vue-router的路有数据,这些数据都将是后续实战课程中的真实路由数据了。同时引入了ElementUIel-menu做为左侧菜单的组件,但本专栏的特点就是遇到第三方功能和组件,自己尽量也要实现一遍,所以,在文章末尾又自己实现了一个tg-menu的组件。如果还不是很明白上下文的同学,可以回过头去看上一节的内容:使用Vue+Vue-router+el-menu实现菜单功能实战

本节介绍

本小节已经是专栏的第11篇博客了,这一节本来是准备开始做图书信息上传的,但考虑到图书信息上传中,有个图片上传的功能点,需要单独抽出一节来说。所以,这一节我们主要是围绕着Vue项目中,通过FormData + axios来实现单个图片上传的功能。

<

  • 148
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 190
    评论
在element form表单中上传图片,可以通过使用element-ui的upload组件来实现。该组件提供了简单易用的上传图片功能。 首先,在Vue组件的template中添加upload组件: ```html <el-upload class="upload-demo" action="/file/upload" //设置上传地址 :on-success="handleSuccess" //设置上传成功的回调函数 :before-upload="beforeUpload" //设置上传前的回调函数 :file-list="fileList" //绑定上传的文件列表 multiple //设置是否支持多文件上传 :auto-upload="false" //设置是否自动上传 > <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> ``` 然后,在Vue组件的script部分定义相关方法: ```javascript data() { return { fileList: [] //定义文件列表 }; }, methods: { handleSuccess(response, file, fileList) { //上传成功的回调函数 console.log(response); }, beforeUpload(file) { //上传前的回调函数 const isJPG = file.type === 'image/jpeg'; const isPNG = file.type === 'image/png'; const isLt500KB = file.size / 1024 < 500; if (!isJPG && !isPNG) { this.$message.error('只能上传jpg/png格式的图片'); } if (!isLt500KB) { this.$message.error('图片大小不能超过500KB'); } return (isJPG || isPNG) && isLt500KB; }, }, ``` 在以上代码中,我们通过设置action属性来指定文件上传的地址,通过on-success属性绑定上传成功时的回调函数handleSuccess,通过before-upload属性绑定上传前的回调函数beforeUpload来限制文件类型和文件大小。 其中,handleSuccess方法用于处理上传成功后的逻辑,比如展示上传成功的图片或者返回的图片链接。beforeUpload方法用于判断文件类型和文件大小是否符合要求,若不符合要求则会弹出错误提示。 最后,通过样式调整可以美化上传按钮和提示文字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 190
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经海路大白狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值