我有一个表单,动作设置为php文件(verify.php)。 在表单中,我制作了一个非常漂亮的图片上传部分。 提交表单后,将打开verify.php以验证用户填写的表单。
表单值全部放在verify.php页面上的另一个表单中。 只有图像上传到服务器上的文件夹,这是我的问题。 如果用户感到遗憾(未验证)投放广告,或者用户又返回更改广告,我希望删除该图片。
我该怎么做?
一种方法是在页面'unLoads'(用户点击后退按钮)时删除文件名。但是,如果用户关闭了verify.php页面上的浏览器,那就不会解决问题了,因为那不算“卸载”吗?
解决方案?
如果您需要更多输入,请告诉我,我将更新此帖子!
由于
答案 0 :(得分:7)
不幸的是,这是一个非常棘手的事情,更简单的解决方案是检查哪些文件是旧的,并在下次有人访问页面时删除它们。这可以通过PHP完全完成,并且非常可靠。
答案 1 :(得分:2)
也许我误解了,但过程可能就是这样:
1个用户上传文件(正常进入* nix / tmp文件夹)
2您将文件移动到第二个临时文件夹/ upload_unconfirmed
3当用户ACTUALLY确认操作时,您就可以了 a)将其移动到您的文件夹以永久保存它,例如/clientfolder/theirusername.jpg b)然后删除/ upload_unconfirmed
中的usersuser.jpg在后台运行一个cron到rm每个文件早于1小时/ upload_unconfirmed / *
如果每个客户端只有一个图像,则后续上传将覆盖其旧文件。
答案 2 :(得分:1)
检测浏览器关闭等“放弃”基本上是不可能的。没有可靠的方法可以在服务器端实时跟踪它。删除这些图像的最简单方法是设置一个正在运行的进程,删除与废弃单元相关联的图像。
答案 3 :(得分:1)
通常,服务器端脚本不知道用户离开页面或关闭浏览器,它只能检查会话超时,但通常30分钟或更长时间取决于设置。
所以,如果你真的想实时做,请在页面中放置ajax计时器,并每隔30秒发送一次 hello 请求或类似的东西到服务器,然后你可以删除图像文件如果没有响应超过1分钟或类似的东西。
但是如果你有很多用户,那么每30秒或更短时间向服务器发送ajax请求会影响服务器性能。
答案 4 :(得分:1)
在用户明确验证之前,请勿将文件移动到其永久位置。 PHP将上传的文件放入特定的位置,通常是/ tmp目录(在* nix安装上),当需要空间时,它会以fifo顺序自动清除。因此,如果您不将文件移出此特殊目录,那么它将在未经指定的时间进行自动清理而无需进一步干预。
答案 5 :(得分:1)
我会按照纪元时间命名图像(使用time()函数),如1258560055.jpg然后构建一个cron作业,然后删除每小时,两小时或之后的所有图像。
答案 6 :(得分:1)
您就是这样做的:
<强> jQuery的:强>
$(window).bind('beforeunload',function(){
if(check){ //whatever check you wish to do
return 'Are you sure you want to leave?';
}
});
$(window).unload(function(){
$.ajax({
type: 'POST',
url: 'file.php',
data: 'value=unload',
async: false // this will not work if set to 'true'
});
alert('done');
});
<强> PHP:强>
if(isset($_POST['value'])){
if($_POST['value']=='unload'){
foreach(glob($targetFolder.'*.*') as $file){
unlink($file); // remove every file
}
rmdir($targetFolder); // remove directory
}
}
注意:我也有一个cron
个工作,每周运行一次,以防万一。 php
情况是用户获取特定 tmp 文件夹并上传文件(即简历,动机信...),如果他离开而未提交,则会删除文件和文件夹。< / p>
答案 7 :(得分:0)
我会对用户确认广告发布的时间设置时间限制。然后,有一个监视作业将在该预定时间触发,如果广告尚未确认,则从服务器中删除该图像。
答案 8 :(得分:0)
我不认为在用户真正离开页面时很容易检测到。我看到的大多数解决方案通常在会话超时时执行一些操作(例如删除临时文件)。
答案 9 :(得分:0)
使用时间戳为每个文件设置数据库条目。然后,当您的流程完成后,删除该条目。然后,每天一次,浏览表格,删除那里的所有文件,并从表格中删除这些记录......这是最安全的赌注。
答案 10 :(得分:0)
您是否只是在验证提交的数据后上传图片?