如何在响应调用后删除 Ktor 服务器多部分数据临时文件
How to delete Ktor server multipart data temp files after responding to call
我是 运行 Ubuntu 20.04 上的 Ktor 服务器,它使用 multipart/form-data 通过 POST 接收文件。我收到的数据如下:
val multiPart = call.receiveMultipart()
val part = multiPart.readPart()
这可行,但每次以这种方式上传文件时,/tmp
文件夹中也会出现一个文件(例如 file-upload11775280475526112.tmp
)。有什么办法可以让Ktor服务器响应相应的POST调用后删除这些文件吗?这些文件的大小确实会随着时间的推移而增加。我目前偶尔使用 cron 作业清理它们,但理想情况下我希望服务器自行清理。
您可以在 PartData
对象上调用 dispose
方法来释放与该部分关联的所有资源。这是一个例子:
embeddedServer(Netty, port = 3030) {
routing {
post("/") {
val part = call.receiveMultipart().readPart()
if (part is PartData.FormItem || part is PartData.BinaryItem) {
part.dispose()
}
}
}
}.start(wait = true)
我是 运行 Ubuntu 20.04 上的 Ktor 服务器,它使用 multipart/form-data 通过 POST 接收文件。我收到的数据如下:
val multiPart = call.receiveMultipart()
val part = multiPart.readPart()
这可行,但每次以这种方式上传文件时,/tmp
文件夹中也会出现一个文件(例如 file-upload11775280475526112.tmp
)。有什么办法可以让Ktor服务器响应相应的POST调用后删除这些文件吗?这些文件的大小确实会随着时间的推移而增加。我目前偶尔使用 cron 作业清理它们,但理想情况下我希望服务器自行清理。
您可以在 PartData
对象上调用 dispose
方法来释放与该部分关联的所有资源。这是一个例子:
embeddedServer(Netty, port = 3030) {
routing {
post("/") {
val part = call.receiveMultipart().readPart()
if (part is PartData.FormItem || part is PartData.BinaryItem) {
part.dispose()
}
}
}
}.start(wait = true)