При загрузке одного файла Filepond отправляет пустой файл перед отправкой «реального» файла. - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь понять, что 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, который хранит компонент.getProcessUrl создает ServerUrl для FilePond на основе идентификатора, сгенерированного в другом месте страницы, и дает ему заголовок аутентификации для передачи.По сути, 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, которые отправляются первыми.

Я смотрел надокументация, и неясно, как будет выглядеть фактическое тело сообщения в этом случае, если не считать, что я ожидаю составные данные формы, поэтому я не понимаю, что вижу.Это дополнительный фрагмент данных формы должен быть там, и мой код сервера должен просто игнорировать его или что?

Спасибо.

1 Ответ

2 голосов
/ 08 мая 2019

Автор FilePond здесь. FilePond отправляет два элемента для каждого файла. Сам файл и его метаданные.

Часть метаданных - первая, которую вы видите. Он может содержать собственные метаданные, информацию об обрезке изображения и т. Д. Второй файл - это файл.

Я понимаю, что это может сбивать с толку, я пытаюсь сделать это необязательным / более простым в настройке. Если вы хотите обойти это, вы можете настроить пользовательский метод обработки, пример процесса в документации по серверу должен работать "из коробки".

...