我正在使用Ok.sendFile从服务器下载文件。
为此,我需要在服务器的本地文件系统中创建文件。
但是,由于服务器没有使用文件本身并且每个用户请求都创建了一个新文件,我想在下载操作完成后删除该文件。
我怎么能这样做,考虑到我已经完成了我的行动并返回了结果?
def index = Action {
val fileToServe = generateFile("fileToServe.pdf")
Ok.sendFile(new java.io.File(fileToServe))}
// How can I "clean-up" fileToServe.pdf after the d/l completes?
答案 0 :(得分:10)
我建议您使用play.api.libs.Files.TemporaryFile
,以便可以使用onClose
方法的Ok.sendFile
参数。
val fileToServe = TemporaryFile(new File("/tmp/" + tmpname))
Ok.sendFile(fileToServe.file, onClose = () => { fileToServe.clean })
答案 1 :(得分:0)
在Play 2.6.x中,您可以使用以下代码清理文件:
#Get tables list for whitelisting
$query3="Show tables";
$result3=mysqli_query($link,$query3);
if (!$result3) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysqli_error();
exit;
}
if ($result3=mysqli_query($link,$query3)){
while($row=mysqli_fetch_row($result3)){
$tables[]=$row[0];
}
}
#UNITS CAT WHITELIST CHECK
if (in_array($units_cat,$tables)){
echo nl2br (" \n Units Cat Table exists");
}else{
echo "Table does not exist";
mysqli_close($link);
echo "<br>";
die("non valid entry");
}