axios 封装文件上传

一、流程图

erDiagram
    小白 --> 开发者: 寻求帮助
    开发者 --> 小白: 提供解决方案

二、步骤说明

步骤 动作 代码
1 引入 axios 库 import axios from 'axios';
2 创建一个方法,用于封装文件上传逻辑 ```javascript

async function uploadFile(file) { const formData = new FormData(); formData.append('file', file);

try { const response = await axios.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data', }, });

return response.data;

} catch (error) { throw error; } }

| 3 | 调用封装好的方法进行文件上传 | ```javascript
const fileInput = document.querySelector('#file-input');
fileInput.addEventListener('change', async (event) => {
  const file = event.target.files[0];
  
  try {
    const result = await uploadFile(file);
    console.log(result);
  } catch (error) {
    console.error(error);
  }
});
``` |

### 三、代码说明

#### 1. 引入 axios 库

首先,我们需要在项目中引入 axios 库,以便我们能够使用它来发送 HTTP 请求。可以通过 npm 安装 axios,并在需要的地方导入它。

```javascript
import axios from 'axios';

2. 创建一个方法,用于封装文件上传逻辑

接下来,我们需要创建一个方法来封装文件上传的逻辑。这个方法接收一个文件对象作为参数,并返回一个 Promise 对象,用于异步处理上传结果。

async function uploadFile(file) {
  const formData = new FormData();
  formData.append('file', file);
  
  try {
    const response = await axios.post('/upload', formData, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    });
    
    return response.data;
  } catch (error) {
    throw error;
  }
}

在这个方法中,我们使用 FormData 对象来创建一个表单,并将文件对象添加到表单中。然后,我们使用 axios 的 post 方法发送请求,将表单数据作为请求体,并设置正确的请求头。最后,我们返回请求的结果数据。

3. 调用封装好的方法进行文件上传

最后,我们需要在页面中创建一个文件上传的输入框,并监听其 change 事件。在事件处理函数中,我们获取用户选择的文件,并调用封装好的方法进行文件上传。

const fileInput = document.querySelector('#file-input');
fileInput.addEventListener('change', async (event) => {
  const file = event.target.files[0];
  
  try {
    const result = await uploadFile(file);
    console.log(result);
  } catch (error) {
    console.error(error);
  }
});

在这个示例中,我们通过 querySelector 方法获取 id 为 "file-input" 的文件上传输入框,并添加 change 事件的监听。在事件处理函数中,我们获取用户选择的文件,并调用封装好的方法进行文件上传。然后,我们可以根据上传结果进行后续的处理。

四、类图

classDiagram
    class 小白 {
        +姓名: string
        +入行时间: Date
        +寻求帮助(): void
    }
    
    class 开发者 {
        +经验: number
        +教会小白(): void
    }
    
    小白 -- 开发者

以上是一个简单的 axios 封装文件上传的教程,希望能帮助到刚入行的小白开发者。在这个教程中,我们首先引入了 axios 库,然后封装了一个上传文件的方法,最后在页面中调用这个方法进行文件上传。希望这个教程能够帮助到你!