公司财务每天要录账单,通过线下走的账都需要录入系统,因为数据进系统了才好出报表。而录单的其中一个环节需要财务上传凭证,也就是收款和打款的截图。她们反馈说现在的上传凭证太麻烦了,每次截图后还要先保存到电脑,然后再选择保存的文件进行上传。能不能截图后直接粘贴上传,省去保存到电脑那一步?
1- 首先我们需要一个粘贴图片的区域,这里我使用的是 div 标签,然后再配合 contenteditable 属性,让 div 区域可以编辑。这样我们就可以监听它的粘贴事件。
<div contenteditable="true" @paste="handlePaste" class="paste-area">
</div>
2- 接下来我们实现 handlePaste 方法,获取文件数据并进行上传
// 处理粘贴事件
handlePaste(event) {
// 阻止默认行为
event.preventDefault();
// 获取剪切板中的数据
const items = (event.clipboardData || window.clipboardData).items;
// 遍历剪切板中的数据,因为用户可能同时复制多个文件,所以需要遍历
for (let i = 0; i < items.length; i++) {
// 判断是否为文件
if (items[i].kind === 'file') {
// 获取 File 对象
const file = items[i].getAsFile();
// 调用上传方法
customUpload(file);
}
}
}
// 自定义上传方法
customUpload(file) {
const formData = new FormData();
formData.append('file', file);
$upload.upload('/file/upload', formData, (res) => {
// 上传成功后的处理
console.log(res);
})
},
功能实现,财务很满意,工作效率又提升了 :)