Axios 中的文件上传(Upload File)方法

Axios 提供了多种上传文件(Upload File)的方法,适用于不同的上传场景。以下是其中几种常用的方法:

1. 使用 FormData 对象

FormData是一个用于创建表单数据的 API,可用于发送包含文件和其他表单数据的multipart/form-data请求。这是处理文件上传的常用方法。通过FormData对象,可以将文件数据添加到表单中,然后使用 Axios 的post或put方法发送请求。

示例

const axios = require('axios');const fileInput = document.querySelector('#fileInput');
const file = fileInput.files[0];const formData = new FormData();
formData.append('file', file);axios.post('/upload', formData, {headers: {'Content-Type': 'multipart/form-data'}
}).then(response => {console.log('上传成功', response.data);
}).catch(error => {console.error('上传失败', error);
});

项目中使用

onChange={async (info: any) => {const formData = new FormData();const fileList = info.fileList;fileList.forEach((file: any) => {formData.append("file", file.originFileObj);});localStorage.setItem('fileName', fileList[0].name)axios.post('http://xxx.xxx.x.xx:8000/upload', formData,{headers: {'Content-Type': 'multipart/form-data'}}).then(res => {if (res) {}})}}

2. 使用 URL 参数

除了使用FormData,你还可以通过在 URL 参数中指定文件名的方式上传文件。这种方法适用于后端期望文件名直接出现在 URL 中的情况。

const axios = require('axios');const fileInput = document.querySelector('#fileInput');
const file = fileInput.files[0];axios.post('/upload', file, {params: {fileName: file.name}
}).then(response => {console.log('上传成功', response.data);
}).catch(error => {console.error('上传失败', error);
});

3. 使用 Base64 编码

这种方法将文件转换成 Base64 编码的字符串,然后通过普通的 JSON 格式发送给服务器。这种方式适用于较小的文件,因为 Base64 编码会增加数据大小。

const axios = require('axios');const fileInput = document.querySelector('#fileInput');
const file = fileInput.files[0];const reader = new FileReader();reader.onload = function(event) {const base64Data = event.target.result.split(',')[1];axios.post('/upload', {file: base64Data}).then(response => {console.log('上传成功', response.data);}).catch(error => {console.error('上传失败', error);});
};reader.readAsDataURL(file);

4.发送文件 Blob 对象

可以通过 CreateObjectURL 把文件对象转成 Blob URL,然后作为 Axios 请求的数据发送。

const file = document.getElementById('file').files[0];const blobUrl = URL.createObjectURL(file);axios.post('/upload', blobUrl, {headers: {'Content-Type': 'multipart/form-data'}  
});

使用说明文档

https://apifox.com/apiskills/axios-upload-file/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【热门话题】前端框架发展史

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 前端开发的历史演变引言第一章:起源与基础建设 - HTML与CSS时代1.1 …

24计算机考研调剂 | 南昌航空大学

2024年南昌航空大学计算机视觉与人工智能团队招收研究生 考研调剂招生信息 学校:南昌航空大学 专业:工学->计算机科学与技术 工学->控制科学与工程->模式识别与智能系统 年级:2024 招生人数:3 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式…

THM学习笔记—RootMe

nmap扫描,发现22端口和80端口打开 dirsearch扫描,注意到/panel和/uploads,在浏览器中打开 可以上传文件,尝试反弹shell 在尝试过程中发现网站不能上传.php文件,只需要将后缀更改为.php5之类即可 成功 查找文件&#x…

前世档案(不用二叉树语法秒杀版c++)

网络世界中时常会遇到这类滑稽的算命小程序,实现原理很简单,随便设计几个问题,根据玩家对每个问题的回答选择一条判断树中的路径(如下图所示),结论就是路径终点对应的那个结点。 现在我们把结论从左到右顺序…

记录一次业务遇到的sql问题

刚开始工作 业务能力比较薄弱 记录一下这几天遇见的一个业务问题 场景 先简单说一下场景,有一批客户(一张表),可以根据这个客户匹配出很多明细数据(另一张表),现在需要删除明细,一个…

Java面试题总结18之springcloud四种分布式事务解决方案

XA规范:分布式事务规范,规定了分布式事务模型 四个角色:事务管理器(协调者TM),资源管理器(参与者RM),应用程序AP,通信资源管理器CRM 全局事务:一…

一款博客网站源码

一款博客网站源码 源码软件库 为大家内置了主题 清爽又强大真正的永久可用的一条源码,该版本为整合版本,内置了Joe主题,搭建后直接启用即可~ 安装环境要求: PHP 7.2 以上 MySQL, PostgreSQL, SQLite 任意一种数据库支持&#xff…

【LeetCode热题100】148. 排序链表(链表)

一.题目要求 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 二.题目难度 中等 三.输入样例 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head [-1,5,3,4,0] 输…

MySQL模块---更新和删除数据

1. 更新数据 // 更新数据 // 要更新的数据 const user { username: aaaaaa777, password: bbb7777, status: 1, id:7} // 要执行的 sql 语句 const sqlStr update users set username?, password?, status? where id? // 调用 db.query() 执行 sql 的同时,使用数组依次为…

【Java基础】IO流(三):字符流的FileReader(文件字符输入流)和 FileWriter(文件字节输出流)

目录 字符流 1、FileReader(字符输入流) 1.1、无参的read( )方法示例 ​编辑 1.2、有参的read(char[ ] buffer)方法示例 2、FileWriter(字符输出流) 字符流 字符流的底层其实就是字节流,即字符流 字节流 字符集…

基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 ESTAR模型概述 4.2 WNL值,P值, Q值,12阶ARCH值 4.3ADF检验 5.完整程序 1.程序功能描述 基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿…

LeetCode Python - 58. 最后一个单词的长度

目录 题目描述解法运行结果 题目描述 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s “Hel…

【Vue】Request模块 - axios 封装Vuex的持久化存储

📝个人主页:五敷有你 🔥系列专栏:Vue ⛺️稳中求进,晒太阳 Request模块 - axios 封装 使用axios来请求后端接口,一般会对axios进行一些配置(比如配置基础地址,请求响应拦截器…

HCIP—BGP邻居关系建立实验

BGP的邻居称为:IBGP对等体 EBGP对等体 1.EBGP对等体关系: 位于 不同自治系统 的BGP路由器之间的BGP对等体关系 EBGP对等体一般使用 直连建立 对等体关系,EBGP邻居之间的报文 TTL中值设置为1 两台路由器之间建立EBGP对等体关系&#xff0…

vue3新功能-Teleport

1.teleport 在组件内的任何位置渲染内容 将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。 例:将组件dialog添加到body下面 <teleport to"body"> <el- dialog --> </teleport> 2.fragments 多个根元素外层不需要…

启智AI协作平台资源调用留档

skywalk163/airoot: 好好学习&#xff0c;天天向上&#xff01; 这是AI学习和实践的基地&#xff01; - airoot - OpenI - 启智AI开源社区提供普惠算力&#xff01; 发现启智AI协作平台修改了资源访问方式&#xff0c;留档以便查找。 为解决平台内各种算力资源环境下模型、数据…

遵循Web标准规范,构建优质网页

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Linux操作系统-汇编LED驱动程序基础

一、汇编LED原理分析 IMX6ULL-LED灯硬件原理分析&#xff1a; 1、使能时钟&#xff0c;CCGR0-CCGR6这7个寄存器控制着IMX6ULL所有外设时钟的使能。为了简单&#xff0c;设置CCGR0-CCGR6这7个寄存器全部为0XFFFFFFFF&#xff0c;相当于使能全部外设时钟。&#xff08;在IMX6ULL芯…

【Flink SQL】Flink SQL 基础概念(三):SQL 动态表 连续查询

《Flink SQL 基础概念》系列&#xff0c;共包含以下 5 篇文章&#xff1a; Flink SQL 基础概念&#xff08;一&#xff09;&#xff1a;SQL & Table 运行环境、基本概念及常用 APIFlink SQL 基础概念&#xff08;二&#xff09;&#xff1a;数据类型Flink SQL 基础概念&am…

大数据平台测试-我是怎么面试高级测试的

前言 下面是我面试时会问的一些问题整体提问思路&#xff1a;接口自动化框架->UI 自动化框架->测试用例设计思维->Linux->SQL->Python->常用算法和数据结构->Shell 脚本->jmeter->Docker->Jenkins 重点还是 UI、接口自动化等方面的技能&#xf…