express - FilePond Retry 忽略 Upload-Offset
问题描述
我正在使用filepond来处理我的 Nuxt-Frontend 和我的 Express-Backend 之间的上传。如果没有发生错误,一切正常。但是,如果我在某些补丁请求之后手动触发错误,然后使用重试按钮 Filepond 开始重新上传文件,而不是从失败的地方重新上传文件。
该文档指出以下内容:
如果在 chunkRetryDelays 中设置的重试次数后其中一个块无法上传,则用户可以选择重试上传。
由于 FilePond 记住了先前的传输 id,因此该过程现在从一个 HEAD 请求开始,该请求伴随着 URL 中的传输 id (12345)。
服务器响应 Upload-Offset 设置为下一个预期的块偏移量(以字节为单位)。
FilePond 将所有具有较低偏移量的块标记为已完成,并继续在请求的偏移量处上传块。
正如您在图片中看到的,我在失败发生后在响应中的 Header 中设置了 Upload-Offset。但是 Filepond 似乎忽略了这个偏移量并重新开始,如下图所示。
理论上,Filepond 应该识别 Offset 并从指定的 Offset 开始发送 Chunk。
在前端文件池中,当前是这样设置的:
<template>
<v-layout>
<v-flex class="text-center">
<file-pond
name="file"
ref="pond"
chunkUploads="true"
chunkSize="500000"
class-name="my-pond"
label-idle="Drop files here..."
allow-multiple="true"
v-bind:files="myFiles"
:server="server"
v-on:init="handleFilePondInit"
v-on:error="error"/>
</v-flex>
</v-layout>
</template>
<script>
// Import FilePond
import vueFilePond from 'vue-filepond';
// Import styles
import 'filepond/dist/filepond.min.css';
// Create FilePond component
const FilePond = vueFilePond();
import axios from "~/plugins/axios";
export default {
components: {
FilePond,
},
data: () => ({
server: {
url: "http://localhost:3001/api/filepond/",
process: "process",
patch: "patch?id="
},
myFiles: [],
}),
methods: {
handleFilePondInit: function() {
console.log('FilePond has initialized');
// example of instance method call on pond reference
this.$refs.pond.getFiles();
},
error: (err) => {
console.log(err);
}
}
};
</script>
解决方案
推荐阅读
- intellij-idea - IntelliJ:突然,现有的导入不再起作用 - 找不到要前往的声明
- reactjs - 将堆栈导航与抽屉导航通信以登录
- java - STOMP sockJS 和 ActiveMQ over Jetty 服务器
- amazon-dynamodb - DynamoDB 多对多关系,或者,我应该使用 Dynamo 吗?
- laravel - 在 Laravel 中使用前缀时,索引“/”路由不起作用
- reactjs - 在数据加载之前不要渲染 - 反应
- c# - 无效参数:不支持的定位器策略:null - 使用 chrome 驱动程序 76.0.3809.126
- ruby - 在 Fluentd 中解析包含 JSON 的日志
- linux - Linux 内核平台驱动程序:对多个设备的 _probe() 的修改
- r - 循环遍历日期和月份以在 R 中提取 Google Analytics 数据以运行马尔可夫链模型的 For 循环