如何删除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-Cookie
将 latestFileId
发送到浏览器并在下一个 DELETE /upload
请求中检索 latestFileId
cookie 值。
我已经使用 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-Cookie
将latestFileId
发送到浏览器并在下一个DELETE /upload
请求中检索latestFileId
cookie 值。