reactjs - Når du laster opp en enkelt fil, sender Filepond inn en tom fil før den sender den «ekte» filen
Jeg prøver å forstå hva Filepond laster opp til servermetoden min, og jeg har kommet over noe som er veldig forvirrende. Jeg bruker bare process-servermetoden, og jeg tester med én fil om gangen. Her er min Filepond-definisjon (dette er React med TypeScript)
<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 er definert på state-objektet som any[]. Vi utløser opplastingen manuelt ved å kalle processFiles() via elementreferansen som komponenten holder. getProcessUrl bygger en ServerUrl for FilePond basert på en id som genereres et annet sted på siden og gir den en auth-header for å passere. Så i praksis ser server.process ut som dette:
{
url: "http://server/api/1234/upload",
method: "POST",
headers: {"Authorization": "foo"}
}
Når opplastingen utløses med en enkelt fil lagt til (via dra-og-slipp hvis det har betydning, det slår meg at jeg ikke har testet dette med en gjennomgang) hvis jeg ser på state.files er det ett element i arrayen. Men det Filepond sender til serveren min ser slik ut:
------WebKitFormBoundary1YHKxKgBU2cvURKi
Content-Disposition: form-data; name="filepond"
{}
------WebKitFormBoundary1YHKxKgBU2cvURKi
Content-Disposition: form-data; name="filepond"; filename="test.csv"
Content-Type: text/csv
------WebKitFormBoundary1YHKxKgBU2cvURKi--
Merk det ekstra formdataet med navnet "filepond" som blir sendt først.
Jeg har sett på dokumentasjonen, og den er vag om hvordan selve post-innholdet skal se ut i dette tilfellet, bortsett fra å si at jeg burde forvente multipart form-data, så jeg forstår ikke hva jeg ser. Skal det ekstra skjemaelementet være der, og bør serverkoden min bare ignorere det, eller hva?
Takk.
Svar #1
FilePonds forfatter her. FilePond sender to elementer for hver fil. Selve filen og dens metadata.
Metadata-delen er den første du ser. Den kan inneholde egendefinert metadata, informasjon om bildebeskjæring, osv. Den andre er filen.
Jeg kan forstå at dette kan være forvirrende, jeg ser på å gjøre dette valgfritt/enklere å konfigurere. Hvis du vil jobbe rundt dette kan du sette opp en tilpasset prosesseringsmetode, prosesseksemplet i serverdokumentasjonen bør fungere rett ut av boksen.