您的位置:

axios上传操作详解

一、 axios上传文件终止

在实际项目中,时常会遇到上传文件需要中止的情况。这时,axios提供了一个很便捷的方法——cancelToken。我们可以通过设置cancelToken来实现中止上传文件的功能。具体实现代码如下:


// 创建一个cancelToken对象
let cancel;
const source = axios.CancelToken.source();

axios({
    url: 'http://www.xxxxx.com/api/upload',
    method: 'post',
    data: formData,
    headers: {
        "Content-Type": "multipart/form-data"
    },
    cancelToken: source.token   // 将cancelToken关联到请求中
})
.then(res => {
    console.log('上传成功:', res);
})
.catch(err => {
    if (axios.isCancel(error)) {
        console.log('上传已取消:', err.message);
    } else {
        console.log('上传失败:', err);
    }
});

// 中止上传文件的方法
cancel = () => {
    source.cancel('Operation canceled by the user.');  // 给source对象赋值一个取消提示
};

在上述代码中,我们首先创建了一个cancelToken对象source,并且将其关联到请求中的cancelToken属性中。在请求中,axios会自动处理中止请求的操作。同时,在最后我们定义了一个函数cancel,相当于暴露出来给外部用户进行调用。

二、axios上传文件到egg

在使用axios日常开发过程中,与后端的交互是必不可少的。一般情况下,我们的后端框架都是基于nodejs的。通常,我们会使用egg.js这个优秀的后端框架。而axios也提供了非常简单的用法来实现如何上传文件到egg框架。

下面是具体的实现代码:


const uploadFile = (params) => {
    let formData = new FormData();
    formData.append('file', params.file);
  
    let config = {
        headers: { 'Content-Type': 'multipart/form-data' }
    }
  
    return axios.post(`http://localhost:7001/api/upload`, formData, config);
}

在上面的代码中,我们首先定义了一个函数uploadFile来上传文件。在这个函数体中,我们创建了一个FormData对象,并且往其中添加了一个指定的文件。接着,我们设置了一个headers选项为formdata格式,并通过axios.post请求将formData发送到egg服务器中。

三、axios上传图片至服务器

在项目中,我们需要经常上传图片。而axios则可以非常方便地实现上传图片至服务器的功能。以下是具体的实现代码:


let formData = new FormData();
formData.append('file', file);

axios({
    url: 'http://www.xxxxx.com/api/upload/image',
    method: 'post',
    data: formData,
    headers: {
        'Content-Type': 'multipart/form-data'
    }
})
.then(res => {
    console.log('上传图片成功:', res);
})
.catch(err => {
    console.log('上传图片失败:', err);
});

在上述代码中,我们同样创建了一个FormData对象,并且通过axios.post请求将formData发送到后端服务器中。

四、axios上传了一般如何终止

当我们在发出一个axios请求后,想要中止这个请求,可以通过cancelToken来实现任务的中止,并且通过配置请求取消回调函数来给出提示信息。


let cancel;
const source = axios.CancelToken.source();

axios({
    url: 'http://www.xxxxx.com/api/data',
    method: 'post',
    data: data,
    headers: {
        'Content-Type': 'application/json; charset=utf-8'
    },
    cancelToken: source.token
})
.then(res => {
    console.log('数据上传成功:', res);
})
.catch(error => {
    if (axios.isCancel(error)) {
        console.log('请求已被取消的提示信息:', error);
    } else {
        console.log('数据上传失败:', error);
    }
});

// 中止请求
cancel = () => {
    source.cancel('取消请求操作');
}

五、axios传递参数

在axios中,我们可以通过params属性来向后端服务端传递参数。比如,对接后端接口时,我们需要将一些常量参数带上,我们可以在前端使用params实现。下面是具体的实现代码:


let params = {
    'key1': 'value1',
    'key2': 'value2'
}

axios({
    url: 'http://www.xxxxx.com/api/data',
    method: 'get',
    params: params
})
.then(res => {
    console.log('获取数据成功:', res);
})
.catch(err => {
    console.log('获取数据失败:', err);
})

六、Axios官网

为了更加全面地学习和使用axios,我们可以去axios的官网(https://github.com/axios/axios)了解更多详细的信息。我们可以在GitHub上找到相关的使用demo以及其他开发者的意见和建议。

七、美国Axios网站选取

作为一个开发人员,我们也需要关注海外的技术文章及文献,以扩展我们的视野。下面选取美国Axios网站上关于axios上传的部分内容:

1. How to upload files with axios - Medium
2. Axios file upload - jQuery + PHP - Stack Overflow

这些网站上的文章可以提供给我们一个更加全面的认识和应用axios上传的知识。

结语

在实际的开发过程中,使用axios上传文件、图片和数据,是非常常见和必要的操作。相比传统的XMLHttpRequest请求,axios减少了很多不必要的代码,并且支持Promise API,使得代码更加易于维护。同时,其实现逻辑清晰,使用也非常方便。上述的七个方面,可以让读者在axios上传操作上获得更加全面的知识。