如果用户退出网页,取消文件链接
PHP - unlink file if user quits web page?
我创建了一个网页,要求用户填写表单,其中包括上传图像。为了允许用户在不刷新页面的情况下查看上传的图像,我使用AJAX将图像存储在临时目录中。如果表单没有正确填写,在提交临时目录中的图像将被删除。但是,如果用户在没有提交表单的情况下上传图像后关闭web浏览器或刷新页面,则图像将保留在临时目录中。
是否有一种方法可以检测用户是否退出/刷新了页面并随后解除了临时目录中的图像文件的链接?
由于HTTP中客户端-服务器通信的性质,没有"简单"的方法来做到这一点。
最佳实践是将映像存储在临时目录中,然后存储映像的时间戳并运行一个作业,删除所有超过30分钟(或任何您想要的超时时间)的映像,或者将映像链接到用户会话并检查会话是否仍然存在-如果会话由于任何原因死亡,则删除映像。
您可以使用
设置会话处理程序bool session_set_save_handler (callback $open, callback $close, callback $read, callback $write, callback $destroy, callback $gc)
使用destroy和gc处理程序删除文件。
您必须调用脚本来定义会话保存处理程序,至少在每个使用会话的脚本中都是如此。您可以将代码放在包含文件中,并在需要时包含它,或者使用php.ini
中的auto_prepend_file指令如果你正在使用jQuery,你可以绑定到beforeunload事件:
$(window).bind("beforeunload", function() {
//send a request to delete the file
}
你当然也可以使用Javascript发送keepalive请求到你的服务器(例如使用AJAX),并在这些keepalive停止时删除图像。这可能是最困难和最不可靠的方法,我不推荐这种方法。
检查这个,onunload。但是最好的方法是使用cron作业,在一段时间后删除映像。很难以可靠的方式发现用户是否退出了页面。
- 选择文件(表单提交)后无法单击“取消”按钮
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 如何在jquery/JavaScript中打开浏览文件对话框时执行取消事件
- 取消文件上载时删除图像预览
- blueimpjquery文件上传如何检测按下取消按钮
- 使用Node对JavaScript文件的行进行注释/取消注释
- 如何手动取消服务器上的 XMLHttpRequest 文件上载(流)
- 上传文件时检测到已取消的拖放操作
- Chrome扩展:从弹出窗口发送数据以取消链接JS文件
- 取消文件上传 - 侦听器
- 当我们使用 ajax post 请求上传文件时,如何取消将文件上传到服务器并删除文件(在上传未完成之间)
- 在Magento Admin后端取消合并CSS和JS文件
- 如何在取消上传时识别文件字符串
- 如何取消由 ajaxSubmit() 在 jQuery 中启动的文件上传
- 取消链接代码以从服务器中删除文件的位置
- 使用 RejamableJS 取消、中止和重试单个文件上传
- 如何通过单击“取消”按钮取消文件上传
- 如何在单击按钮时取消文件上传
- 如果用户退出网页,取消文件链接
- 取消文件上传在fineuploader jquery插件