如何在Filepond上删除临时上传的文件

时间:2019-05-03 13:33:17

标签: node.js reactjs http express 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(); }} />

现在处理快递中的文件上传

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

要删除已上传的临时文件,filepond将DELETE请求发送到上述服务器

所以我用

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

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

1 个答案:

答案 0 :(得分:0)

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

有几种方法可以声明文件记录:

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