我创建了一个网页,要求用户填写表单,其中包括上传图像。为了让用户无需刷新页面即可查看上传的图像,我使用 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/