Как удалить временно загруженные файлы на filepond - PullRequest
1 голос
/ 03 мая 2019

Я использовал 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 отправляет запрос DELETE на сервер, упомянутый выше

Поэтому я использую

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

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

1 Ответ

0 голосов
/ 06 мая 2019

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

Существует несколько способов объявить запись файла:

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