Vue.js FilePond-暂停上载,直到方法执行完成

Vue.js FilePond-暂停上载,直到方法执行完成,vue.js,nuxt.js,filepond,Vue.js,Nuxt.js,Filepond,我在我的NuxtJS项目中使用FilePond()和FilePond()的Vue适配器 我想减轻同一个文件被上传多次的痛苦。为了实现这一点,我目前正在调用filepond的addfilestart-事件上的一个函数。被调用的函数获取提供的文件对象,并从1MB块Slizes构建哈希 当此函数正在执行和计算哈希文件池时,它已开始上载 有没有可能在我确定散列还不知道的情况下,通过某种方式暂停并恢复它来阻止此上载 我不喜欢的一种解决方法是暂时从filepond中删除该文件,并在计算哈希后重新添加它 编辑

我在我的NuxtJS项目中使用FilePond()和FilePond()的Vue适配器

我想减轻同一个文件被上传多次的痛苦。为了实现这一点,我目前正在调用filepond的
addfilestart
-事件上的一个函数。被调用的函数获取提供的文件对象,并从1MB块Slizes构建哈希

当此函数正在执行和计算哈希文件池时,它已开始上载

有没有可能在我确定散列还不知道的情况下,通过某种方式暂停并恢复它来阻止此上载

我不喜欢的一种解决方法是暂时从filepond中删除该文件,并在计算哈希后重新添加它

编辑:这是相关代码。我删除了大部分内容,这对这个问题没有影响(所以不必奇怪,为什么没有服务器配置等等)

一旦文件在上传前放入filepond
,就会调用check
。此函数通过调用
load
,递增计算传递文件的哈希值

加载
将每个部分文件块同步读取为ArrayBuffer,以确保生成的哈希不会出错,因为某些块比其他块快

我添加了两条评论,理想情况下我会暂停并继续上传


从“crypto js/”导入CryptoJS;
从“vue filepond”导入vueFilePond;
导入“filepond/dist/filepond.min.css”;
const FilePond=vueflepond(FilePondPluginFileValidateType);
导出默认值{
组成部分:{
鱼塘,
},
计算:{
chunkSize(){
返回此。$config.chunk\u size\u字节;
},
},
方法:{
上传前异步检查(有效负载){
//最好是暂停上传
const{file}=payload;
const{pond}=这个。$refs;
const SHA256=CryptoJS.algo.SHA256.create();
设计数器=0;
const callbackProgress=(数据)=>{
const wordBuffer=CryptoJS.lib.WordArray.create(数据);
SHA256.update(wordBuffer);
计数器+=数据长度;
log(`${((counter/file.size)*100.toFixed(0)}%`);
};
const callbackFinal=(数据)=>{
console.log('100%);
const encrypted=SHA256.finalize().toString();
log(`encrypted:${encrypted}`);
//使用散列进行操作并继续上载
};
加载(文件、callbackProgress、callbacknal);
},
异步加载(文件、callbackProgress、callbacknal){
const chunkSize=1024*1024*10;//字节
设偏移量=0;
让部分;
如果(file.size==0){
callbackFinal();
}
while(偏移量=file.size){
callbackFinal();
}
偏移量+=块大小;
}
},
},
};