位置: 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)(埃姆雷莫尔)

  • OPPO Ace2有没有指纹识别呢(oppoace指纹解锁在哪里)

  • 8p升级了系统怎么降级(8p升级后)

  • 抖音互相关注一方取消后(抖音互相关注一定会被刷到吗)

  • hd开启会不会费电(hd开启有用吗)

  • 表格中的文字怎么一行弄成两行(表格中的文字怎么居中对齐)

  • 怎样申请微信收款二维码收款贴纸(怎样申请微信收款语音播报器)

  • 华为p40黑名单在哪(华为p40手机联系人黑名单哪里)

  • b站播放量自己看算吗(b站播放量自己算不算)

  • 计算机按性能可以分为哪几类(计算机按性能可以分为五大类)

  • dns一般是多少(dns一般为多少)

  • 微信语音通话时来消息不震动(微信打电话语音)

  • 微信长按图片翻译怎么开启(微信长按图片翻译没了)

  • ipadpro保修期多久(ipadpro 保修期)

  • vivos1怎么没有语音唤醒(vivo语音没有声音)

  • 对方关机打电话提示什么(对方关机打电话过去开机之后有记录吗)

  • 怎么解绑爱奇艺手机号(怎么解绑爱奇艺绑定的微信)

  • oppoa57怎么切换主屏幕(oppoa57怎么切换桌面待机)

  • 快手粉丝删了能恢复吗(快手粉丝删了能找回吗)

  • 如何修改微信二维码收款名字(如何修改微信二维码)

  • 手机补卡之后安全了吗(手机补卡之后原先的卡)

  • 荣耀play游戏助手卸载了怎么办(荣耀play的游戏助手是自动开启的吗)

  • excel打印预览在哪里(excel中的打印预览)

  • 布列塔尼大区的城市圣马洛,法国 (© Mathieu Rivrin/Moment/Getty Images)(布列塔尼岛屿)

  • pytorch如何搭建一个最简单的模型,(pytorch如何搭建神经网络)

  • Python中Gevent的使用(python generation)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络