vue3如何使用axios获取文件上传速度和网速
时间: 2023-06-01 17:07:53 浏览: 220
首先,你可以使用axios的interceptors来获取文件上传速度和网速。可以使用以下代码:
```
const axiosInstance = axios.create();
axiosInstance.interceptors.request.use(config => {
config.metadata = {
startTime: new Date(),
uploadSpeed: 0,
speedIndex: 0
};
return config;
});
axiosInstance.interceptors.response.use(response => {
const { config } = response;
const endTime = new Date();
const duration = endTime - config.metadata.startTime; // 接口请求时间
const fileSize = parseFloat((response.headers['content-length'] / 1024 / 1024).toFixed(2)); // 文件大小(M)
const speed = fileSize / (duration / 1000); // 平均网速(M/s)
const metadata = {
...config.metadata,
uploadSpeed: speed,
speedIndex: config.metadata.speedIndex + 1
};
console.log(`文件大小:${fileSize} M`);
console.log(`上传时间:${duration} ms`);
console.log(`平均网速:${speed} M/s`);
response.config.metadata = metadata;
return response;
});
axiosInstance.post('/upload', formData);
```
代码中利用axios的interceptors,在发送请求时保存请求时间,并在请求结束后根据请求时间和内容大小计算出网速和上传速度。
阅读全文