Как запустить удаление файла с помощью FilePond

У меня есть FilePond (через React), настроенный на загрузку нескольких файлов, получение этих файлов на сервере, их сохранение и правильное отображение при повторном посещении страницы.

let server = {
  url: '/mypath',
  process: '/mypath',
  revert: '/mypath'
};

<FilePond
  server={server}
  allowMultiple={true}
  allowRevert={true}
  files={current_files}
/>

Используя бэкэнд Python, это прекрасно работает для загрузки:

if request.method == "POST":
    # handle request.FILES.get("filepond")

Теперь я хочу реализовать DELETE, поэтому я добавляю allowRemove={true} к экземпляру FilePond и revert: /path к server конфигурации. Я ожидаю, что когда пользователь нажмет X, FilePond отправит запрос DELETE. Но ничего не происходит - пользователь, нажимающий X, вообще не отправляет запрос зарегистрированной конечной точке. Я нашел, что могу добавить:

onremovefile={(file) => handleRemove(file)}

и если я сделаю handleRemove() Реагировать на функцию, она вызывается с file объект. Но это кажется хакерским - разве нажатие X не должно автоматически связываться с зарегистрированной конечной точкой?

Должен ли я отправлять УДАЛИТЬ вручную из моего handleRemove() функция, или я что-то упустил в моей конфигурации? Документы подразумевают, что "возврат" действий вызывает УДАЛИТЬ, когда revert определяется на объекте сервера.

3 ответа

Попробуйте хук useRef .

В этом примере файл успешно загружен и сразу же будет удален.

это должно работать в вашем случае.

      const filePondRef = useRef(null)
<FilePond ref={filePondRef} onprocessfile={handleOnProcessFile}/>

затем внутри вашего обработчика onprocessfile

      const handleOnProcessFile = (error, file) => {
  if (error) {
    return;
  }

  filePondRef.current.removeFile(file);
};
<FilePond server={'./api'}>

Когда FilePond хочет загрузить файл, он отправляет POST запросить ./api

Когда FilePond хочет восстановить загрузку файла, он отправляет DELETE запросить ./api

allowRemove не существует (возможно, вы хотели написать allowRevert?).

Чтобы отправить запрос на возврат в другую конечную точку, вы можете передать другой URL-адрес revert собственность server объект.

<FilePond server={{ url:'./api', revert:'/revert' }>

Теперь FilePond вызывает ./api загрузить файл и ./api/revert вернуть файл.

Я долго искал это, но я придумал ручной способ удаления элемента списка после успешного обновления.

 onload: (response) => {
          setTimeout(() => {
                $("li").remove("[data-filepond-item-state=processing-complete]");
             }, 1500);

       },
Другие вопросы по тегам