在播放框架中发送大文件时如何捕获客户端断开连接?
How to catch a client disconnection when sending a large file in play framework?
我正在播放应用程序响应中发送文件。当客户端下载文件时,我正在从本地服务器清理文件。我正在使用以下代码实现此目的:
val fileToServe = TemporaryFile(new File(fileName))
Ok.sendFile(fileToServe.file, onClose = () => { fileToServe.clean })
但当客户端断开连接时,临时文件仍保留在本地服务器中。但我想处理这种断开连接并清理
临时文件。我听说过 onDoneEnumerating() 但无法使用它。
谁能指出处理断开连接和从本地服务器清理临时文件的最简单方法?
TemporaryFile 适用于当 Play 收到必须保存在临时文件位置的数据流时,而不是您发送文件。它在完成(2.6 之前)或幻影文件引用(2.6.x)时删除。
捕获断开连接的最简单方法是调用 Files.deleteIfExists
在 onClose 块中。如果由于某种原因这似乎不起作用,您可以使用临时文件收割机:
https://www.playframework.com/documentation/2.6.x/ScalaFileUpload#Cleaning-up-temporary-files
这将经常清理临时文件目录。
我正在播放应用程序响应中发送文件。当客户端下载文件时,我正在从本地服务器清理文件。我正在使用以下代码实现此目的:
val fileToServe = TemporaryFile(new File(fileName))
Ok.sendFile(fileToServe.file, onClose = () => { fileToServe.clean })
但当客户端断开连接时,临时文件仍保留在本地服务器中。但我想处理这种断开连接并清理 临时文件。我听说过 onDoneEnumerating() 但无法使用它。
谁能指出处理断开连接和从本地服务器清理临时文件的最简单方法?
TemporaryFile 适用于当 Play 收到必须保存在临时文件位置的数据流时,而不是您发送文件。它在完成(2.6 之前)或幻影文件引用(2.6.x)时删除。
捕获断开连接的最简单方法是调用 Files.deleteIfExists
在 onClose 块中。如果由于某种原因这似乎不起作用,您可以使用临时文件收割机:
https://www.playframework.com/documentation/2.6.x/ScalaFileUpload#Cleaning-up-temporary-files
这将经常清理临时文件目录。