当前位置: 首页 > news >正文

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.lryc.cn/news/317481.html

相关文章:

  • 机试:数塔路径
  • ROS2中launch编写及参数含义(xml、python)
  • 鸿蒙Socket通信示例(TCP通信)
  • yolov5-v6.0详细解读
  • FPGA - 单总线协议(one-wire)
  • python的函数与类的定义
  • Parade Series - WebRTC ( < 300 ms Low Latency ) T.B.D
  • 【ARM】MDK在programming algorithm界面添加FLM
  • springmvc学习笔记1
  • 力扣106 从中序与后续遍历序列构造二叉树
  • 数字逻辑-时序逻辑电路一
  • web 课程
  • 工业园区智慧水电设备管控系统
  • Git之版本回退
  • 「jQuery系列」jQuery 校验表单(Validate)
  • 【Java设计模式】十九、中介者模式
  • 这个学习Python的神仙网站,后悔没早点发现
  • 牛津大学“领域驱动设计”课程
  • Redisson分布式锁解决方案
  • linux命令深入研究——cat
  • 代码随想录算法训练营第40天|343. 整数拆分、96.不同的二叉搜索树
  • 二叉树算法
  • 【2024年5月备考新增】《软考真题分章练习(答案解析) - 4 项目范围管理(高项)》
  • Docker拉取镜像存储不足
  • JUNIT5+Mockito单元测试
  • 【C#】【SAP2000】读取SAP2000中所有Frame对象的应力比到Grasshopper中
  • 一台服务器部署两个独立的mysql实例
  • SpringBoot(Lombok + Spring Initailizr + yaml)
  • 数据库基础知识超详细解析~‍(进阶/复习版)
  • 创建对象的方法有哪些