我试图了解 Filepond 正在上传到我的服务器方法的内容,但我遇到了一些非常令人困惑的事情。我只使用process
服务器方法,并且一次测试一个文件。这是我的 Filepond 定义(这是对打字稿的反应)
<FilePond
ref={this.pond}
allowMultiple={true}
maxFiles={3}
instantUpload={false}
onupdatefiles={(files) => this.setState({files: files})}
files={this.state.files}
// @ts-ignore
server={{
process: this.getProcessUrl(),
revert: null,
fetch: null,
load: null,
restore: null,
}}/>
files
在状态对象上定义为any[]
。我们processFiles()
通过组件保留的元素 ref 调用手动触发上传。根据页面上其他地方生成的 id 为 FilePondgetProcessUrl
构建一个,并为其提供一个 auth 标头以传递。ServerUrl
所以基本上server.process
看起来像这样:
{
url: "http://server/api/1234/upload",
method: "POST",
headers: {"Authorization": "foo"}
}
当通过添加单个文件触发上传时(如果这很重要,通过拖放,我会想到我没有通过浏览测试过),如果我查看state.files
数组中有一个项目。但是,Filepond 提交给我的服务器的内容如下所示:
------WebKitFormBoundary1YHKxKgBU2cvURKi
Content-Disposition: form-data; name="filepond"
{}
------WebKitFormBoundary1YHKxKgBU2cvURKi
Content-Disposition: form-data; name="filepond"; filename="test.csv"
Content-Type: text/csv
------WebKitFormBoundary1YHKxKgBU2cvURKi--
请注意首先发送的名为“filepond”的额外表单数据。
我一直在查看文档,在这种情况下实际的帖子正文应该是什么样子并没有告诉我期待多部分表单数据,所以我不明白我所看到的内容。那额外的表单数据是否应该在那里,我的服务器代码应该忽略它还是什么?
谢谢。