antdv upload customRequest 前端上传方法
·
html:
<a-upload
v-model:file-list="fileList"
list-type="picture-card"
:before-upload="beforeUpload"
@change="handleChange"
:show-upload-list="false"
:customRequest="customImageRequest"
>
<div class="upload-box" v-if="imageUrl">
<img :src="imageUrl" alt="avatar" />
<div class="delete" @click="delteImg">
<DeleteOutlined />
</div>
</div>
<div v-else>
<plus-outlined />
<div class="ant-upload-text">上传签名</div>
</div>
</a-upload>
js:
// 图片压缩成base64
function getBase64(img: Blob, callback: (base64Url: string) => void) {
const reader = new FileReader();
reader.addEventListener('load', () => callback(reader.result as string));
reader.readAsDataURL(img);
}
const fileList = ref([]);
// 上传文件改变时的状态
const handleChange = (info: any) => {
if (info.file.status === undefined) {
fileList.value = fileList.value.filter((item, index) => {
return index < fileList.value.length - 1;
});
}
if (info.file.status === 'uploading') {
loading.value = true;
return;
}
if (info.file.status === 'error') {
loading.value = false;
message.error('upload error');
}
};
// 上传文件之前的钩子,参数为上传的文件,若返回 false则停止上传。支持返回一个 Promise 对象,Promise 对象 reject 时则停止上传,resolve 时开始上传( resolve 传入 File或 Blob对象则上传 resolve 传入对象)。注意:IE9 不支持该方法。
const beforeUpload = (file: FileItem) => {
const isJpgOrPng =
file.type === 'image/jpeg' ||
file.type === 'image/png' ||
file.type === 'image/tiff' ||
file.type === 'image/jpg';
if (!isJpgOrPng) {
message.error('请上传jpeg,png,tiff,jpg格式图片');
return false;
}
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) {
message.error('上传图片太大,已超出10M');
return false;
}
return true;
};
// 通过覆盖默认的上传行为,可以自定义自己的上传实现(只写了前端没有写请求)
const customImageRequest = (info:any)=>{
const { file } = info;
getBase64(file, (base64Url: string) => {
imageUrl.value = base64Url;
});
setTimeout(()=>{
loading.value = false;
})
};
// 删除图片
const delteImg = (e:Event)=>{
e.stopPropagation();
imageUrl.value = '';
};


魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)