Как удалить временные загруженные файлы на filepond

Я использовал filepond для загрузки файлов в ответ:

<FilePond files={this.state.files} allowMultiple={true} server="http://localhost:5000/api/upload" onupdatefiles={(fileItems) => { this.setState({ files: fileItems.map(fileItem => fileItem.file) }); this.handleFileMetadata(); }} />

Теперь для обработки загрузки файла я использую экспресс

router.post('/upload', (req, res) => {
// logic to store file on mongodb
})

Чтобы удалить загруженные временные файлы, filepond отправляет запрос на УДАЛЕНИЕ на упомянутый выше сервер.

Так что я использую

router.delete('/upload', (req, res) => {
})

Но я не могу удалить файл из mongodb, как мне удалить его без каких-либо атрибутов?


person Darshan    schedule 03.05.2019    source источник
comment
Что вы имеете в виду под удалением файла из mongodb? Вы вставляли запись файла в mongodb при обработке POST /upload запроса? Если это так, вам нужно удалить его из mongodb вручную, когда DELETE /upload произойдет.   -  person shaochuancs    schedule 05.05.2019
comment
@shaochuancs Да, мне нужно написать логику в маршруте DELETE, но у меня возникают проблемы с получением любого типа значения, чтобы я мог распознать конкретный файл для удаления в MongoDB.   -  person Darshan    schedule 05.05.2019


Ответы (1)


Чтобы удалить запись файла в MongoDB, вам необходимо объявить, какая запись файла должна быть удалена. В любом случае MongoDB не знает вашего намерения автоматически.

Объявить файловую запись можно несколькими способами:

  • (Рекомендуемое решение) В маршрутизаторе POST /upload верните идентификатор вставленной записи файла во внешний интерфейс (например, 5b88a6b213d0613d198d7ecf). Затем в следующем DELETE /upload/:recordId запросе интерфейс передаст этот идентификатор вставленной записи файла в бэкэнд, например DELETE /upload/5b88a6b213d0613d198d7ecf. Затем код Node.js может извлечь идентификатор удаляемого файла и выполнить соответствующую операцию в MongoDB.
  • Если это временный файл и его необходимо удалить сразу после загрузки, и вы не можете следовать приведенному выше решению по какой-либо причине (странная ситуация), вы можете использовать сеанс, если веб-приложение основано на сеансе: в маршрутизаторе POST /upload сохранить latestFileId в сеансе и получить latestFileId значение сеанса в следующем DELETE /upload запросе.
  • Если это временный файл и его необходимо удалить сразу после загрузки, и вы не можете следовать первому решению по какой-либо причине (странная ситуация), а веб-приложение не требует сеанса, вы можете использовать Cookie: В POST /upload маршрутизаторе , отправьте latestFileId в браузер с помощью Set-Cookie и получите значение latestFileId cookie в следующем DELETE /upload запросе.
person shaochuancs    schedule 06.05.2019