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.

Relaterte artikler