位置: IT常识 - 正文

Vue3中通过 input 标签 发送文件/图片给后端(vue获取input)

编辑:rootadmin
Vue3中通过 input 标签 发送文件/图片给后端

推荐整理分享Vue3中通过 input 标签 发送文件/图片给后端(vue获取input),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue怎样获取input输入的值,vue3中通过ref获取component渲染的动态组件,vue a-input,vue中@input,vue获取input输入框的内容,vue怎样获取input输入的值,vue怎样获取input输入的值,vue3中通过vite创建自定义配置,内容如对您有帮助,希望把文章链接给更多的朋友!

一;设置 input 标签 

<input type="file" ref="fileInput" @change="handleFileChange"/>

1.将 input 标签的 type 属性设置为 file 。

Vue3中通过 input 标签 发送文件/图片给后端(vue获取input)

使用 type="file" 的 <input> 元素使得用户可以选择一个或多个元素以提交表单的方式上传到服务器上,或者通过 Javascript 的 File API 对文件进行操作。

2.绑定 ref 绑定并获取该标签的DOM节点。

type="file" 的 <input> 元素身上存在一个 files 属性,其中包含了所有已选择的文件,其值是一个伪数组。

3.绑定事件,处理文件/图片上传的后续逻辑。

二;通过 FormData 实例对象处理 二进制 文件/图片(以下代码展示上传一张图片)。

// 上传之前要处理一下文件 因为文件是二进制的,要利用 FormData 实例对象进行处理const formData = new FormData();// append方法把文件添加到 FormData实例对象中 第一个参数:文件名 第二个参数:要上传的文件formData.append("smfile", files[0]);

三;获取 input 节点的 files 属性以及上传文件/图片的业务逻辑与请求发送都放在了 input 事件回调函数中进行。

由于是发送二进制数据,所以发送请求时头部字段 Content - type 要设置成 multipart / form-data

// input 发生改变时触发的回调函数 --- 验证上传的文件是否合法,然后处理文件并发送请求 const handleFileChange = (e: Event) => { const currentTarget = e.target as HTMLInputElement; if (currentTarget.files) { // 将input身上的files对象转换为数组类型 const files = Array.from(currentTarget.files); // 如果有上传限制,则对文件进行判断 if (props.beforeUpload) { // 调用判断文件是否合法的函数---由父组件自定义设置 const result = props.beforeUpload(files[0]); // 如果不合法就直接返回出去 if (!result) return; } // 上传的文件符合要求 // 上传成功之前,把上传文件状态改为 loading fileStatus.value = "loading"; // 上传之前要处理一下文件 因为文件是二进制的,要利用 FormData 实例对象进行处理 const formData = new FormData(); // append方法把文件添加到 FormData实例对象中 第一个参数:文件名 第二个参数:要上传的文件 formData.append("smfile", files[0]); // 发送异步请求上传文件 // 因为发送的二进制格式文件 所以要额外设置请求头 axios .post('yes/api/v2/upload', formData, { headers: { "Content-Type": "multipart/form-data", "Authorization":"CiKs2eatBnpdzNJ58T", }, }) .then((res) => { // 图片上传成功 if(res.data.code == 'success') { // 存储成功的返回结果 uploadedData.value = res.data.data.url; }else { uploadedData.value = res.data.images; } // 请求发送成功 修改上传文件状态 fileStatus.value = "success"; // 把获取到的图片url传给父组件 context.emit('getImageUrl',uploadedData.value); }) .catch((e) => { console.log('图床上传',e); fileStatus.value = "error"; }) .finally(() => { if (fileInput.value) { fileInput.value.value = ""; } }); } };
本文链接地址:https://www.jiuchutong.com/zhishi/287974.html 转载请保留说明!

上一篇:yolov5训练并生成rknn模型以及3588平台部署(yolov2训练)

下一篇:埃尔姆利国家自然保护区里的一只文须雀,英格兰肯特郡 (© Mark Bridger/Offset by Shutterstock)(埃姆雷莫尔)

  • 税务师有什么用处
  • 行政事业单位卖废品怎么处理
  • 为什么应交增值税记在借方
  • 应收款抹零计入什么会计科目
  • 小规模纳税人所得税税率
  • 旅行社小规模纳税人增值税怎么征税
  • 税盘显示已过开票截止日期
  • 到期一次还本付息债券
  • 减税降费在中国 应形成制度性
  • 更正申报增值税会产生滞纳金吗
  • 企业所得税清算报备是什么意思
  • 广告费发票收到但是不抵扣怎么做账?
  • 劳务和工资合并扣税吗
  • 折旧率通俗理解
  • 公司之间过户车辆要交税吗
  • 交强险保单被保险人写谁都行?
  • 持有至到期投资是什么意思
  • 中级会计考试考后审核需要什么资料
  • win11如何更改开始菜单位置
  • linux 中cat
  • 多发工资未退回会怎么样
  • 非正常损失为什么不赔偿
  • 商业支付时使用
  • 长期股权投资转出账务处理
  • php基础函数
  • 外贸公司付款方式有几种
  • 结构性存款利息增值税
  • uniapp实战视频教程
  • 期初留存收益包括
  • 草丛里的野花像
  • 武陵山脉海拔
  • 交暖气费可以开单位发票吗
  • thinkphp技巧
  • 企业所得税是地税申报还是国税申报
  • thinkphpcount查询
  • 搭建本地http服务器
  • 留购价计入什么费
  • 确认递延所得税资产时,应估计相关可抵扣
  • 管理费用只能在借方吗
  • 帝国cms栏目分类
  • 借款合同按什么缴纳印花税
  • 递延所得税资产和递延所得税负债
  • 报销加油费怎么做账
  • 礼物提前到会不会不好
  • 小规模纳税人防水工程专用发票税率是多少
  • SQL2005 provider: 命名管道提供程序 error: 40 无法打开到 SQL Server 的连接
  • mysql查询重复的全部删除
  • 库存暂估入账的会计分录
  • 保险合同包含什么
  • 公司宿舍楼出租让我当甲方违法吗
  • 自产产品对外捐赠确认收入吗
  • 财产清查怎么做分录
  • 现金支票存根联和正联怎么盖章
  • 小规模购买税控盘分录怎么写
  • 车辆保险费计入现金流量表哪里
  • 企业向个人借款利息如何处理
  • 单位员工购买本地保险
  • sql语句训练题及答案
  • ubuntu20.04 u盘
  • 如何设置电脑从d盘启动
  • mac闹钟app
  • winmysqladmin.exe - winmysqladmin进程是什么意思
  • xp系统java环境变量配置
  • windows10无法关闭
  • centos bz
  • win7系统ie浏览器打不开
  • win8系统开启摄像头权限
  • python绘制球面
  • media and
  • android auto翻译
  • 浏览图片的软件叫什么
  • javascript的相关应用
  • webpack配置文件在哪
  • 关于Air端与android端的通信实现
  • shell执行多个命令
  • 工具类的作用
  • 如何使用jquery设置一个属性值
  • 贵州省地方税务局历任纪检组长马平
  • 广东国家税务局电子税务局官网入口
  • 契税为什么要补贴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设