在Vue中取消文件上传通常涉及到使用XMLHttpRequest(XHR)或者Fetch API来控制上传过程。以下是使用Vue 3和Fetch API取消文件上传的方法:
fetch()
方法,该方法提供了一种简单,合理的方式来跨网络异步获取(或发送)资源。<template>
<div>
<input type="file" @change="handleFileChange" />
<button @click="cancelUpload">取消上传</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const controller = new AbortController();
let uploadPromise = null;
const handleFileChange = (event) => {
const file = event.target.files[0];
if (file) {
uploadPromise = uploadFile(file, controller.signal);
}
};
const cancelUpload = () => {
controller.abort();
};
const uploadFile = async (file, signal) => {
try {
const formData = new FormData();
formData.append('file', file);
const response = await fetch('https://example.com/upload', {
method: 'POST',
body: formData,
signal: signal // Pass the signal to the fetch request
});
if (!response.ok) {
throw new Error('上传失败');
}
return await response.json();
} catch (error) {
if (error.name === 'AbortError') {
console.log('上传已取消');
} else {
console.error('上传过程中发生错误:', error);
}
}
};
return {
handleFileChange,
cancelUpload
};
}
};
</script>
在实际应用中,你需要将https://example.com/upload
替换为你的实际上传接口地址。当用户点击取消上传按钮时,cancelUpload
方法会被触发,从而调用AbortController
的abort
方法来取消上传请求。
领取专属 10元无门槛券
手把手带您无忧上云