如何删除filepond上的临时上传文件

How to delete temporary uploaded files on filepond

我已经使用 filepond 在 React 上上传文件:

<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(); }} />

现在我使用 express 处理文件上传

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

要删除上传的临时文件,filepond 会向上述服务器发送删除请求

所以我用

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

但是我无法从mongodb中删除文件,如何删除没有任何属性的文件?

要删除MongoDB中的文件记录,需要声明需要删除的文件记录。无论如何,MongoDB 不会自动知道你的意图。

文件记录的声明方式有几种:

  • (推荐方案)在POST /upload路由器中,return插入的文件记录id到前端(如5b88a6b213d0613d198d7ecf)。然后,在下面的 DELETE /upload/:recordId 请求中,前端会将插入的文件记录 id 传递给后端,例如DELETE /upload/5b88a6b213d0613d198d7ecf。接下来Node.js代码可以在MongoDB.
  • 中提取待删除文件id并进行相应的操作
  • 如果是临时文件,上传后需要立即删除,而且无论什么原因都不能按照上面的解决方法(奇怪的情况),如果web应用是基于session的,可以使用Session : 在 POST /upload 路由器中,将 latestFileId 存储在会话中并在下一个 DELETE /upload 请求中检索 latestFileId 会话值。
  • 如果是临时文件,上传后需要立即删除,而且无论出于何种原因(奇怪的情况)都无法按照第一种解决方案进行,并且Web应用程序是无会话的,则可以使用Cookie:在 POST /upload 路由器中,使用 Set-CookielatestFileId 发送到浏览器并在下一个 DELETE /upload 请求中检索 latestFileId cookie 值。