javascript - PHP - 如果用户退出网页则取消链接文件?

标签 javascript php jquery html ajax

我创建了一个网页,要求用户填写表单,其中包括上传图像。为了让用户无需刷新页面即可查看上传的图像,我使用 AJAX 将图像存储在临时目录中。如果表单填写不正确,提交后临时目录中的图像将被删除。但是,如果用户在上传图像后关闭网络浏览器或刷新页面而不提交表单,则该图像将保留在临时目录中。

有没有办法检测用户是否退出/刷新页面,然后取消临时目录中图像文件的链接?

最佳答案

由于 HTTP 中客户端-服务器通信的性质,没有“简单”的方法可以做到这一点。

最佳实践是将图像存储在临时目录中,然后存储图像的时间戳并运行删除所有超过 30 分钟(或您想要的任何超时)的图像的作业,或者将图像链接到用户 session 并检查 session 是否仍然存在 - 如果 session 由于某种原因终止,请删除图像。

您可以设置 session 处理程序

bool session_set_save_handler(回调$open,回调$close,回调$read,回调$write,回调$destroy,回调$gc)

使用 destroy 和 gc 处理程序删除文件。

您必须至少在每个与 session 一起使用的脚本中调用脚本来定义 session 保存处理程序。您可以将代码放入包含文件中并在需要时包含它,或者在 php.ini 中使用 auto_prepend_file 指令

如果您使用 jQuery,您可以绑定(bind)到 beforeunload 事件:

$(window).bind("beforeunload", function() {
     //send a request to delete the file
}

您当然也可以使用 Javascript 将 keepalive 请求发送到您的服务器(例如使用 AJAX),并在这些 keepalive 停止时删除图像。这可能是最困难和最不可靠的方法,我不会推荐它。

关于javascript - PHP - 如果用户退出网页则取消链接文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25388096/

相关文章:

javascript - 如何在 Sharepoint 2013 博客 (Office365) 上使用 SyntaxHighlighter?

php - 与 Cake php 一起实现 Sphinx API 的问题

php - 允许英文字符、中文、日文

javascript - 如何隐藏谷歌组织结构图中所选元素的 HTML 类?

javascript - jQuery 中的 this 和 $(this) 有什么区别?

javascript - 除了默认名称 "MainActivity"之外,如何自定义 React Native 中的默认 Activity ?

javascript - 为什么 "\n"即使被告知不要创建新行?

jquery - 如何在文档准备好后在 .live() 内运行代码?

javascript - 如何设置极地面积图中比例尺数字的样式 (chart.js)

php - 在数组中搜索两个值