只是一个关于正确方法的简短问题。我允许在没有用户注册的情况下将表单发布到数据库,每个帖子都将被审核。但是,该页面将是一个包含文件上传的多页表单。
如果用户完成提交表单的前几页,包括上传文件,然后放弃表单提交,我该怎么办。
如何清理不需要的数据和上传的文件,同时仍然确保如果他们正在发布文件,我就不会将其删除。
答案 0 :(得分:1)
我正在处理类似的问题。我的情况有点不同。我需要为用户提供发布广告的选项,同时允许他上传图片。
我通过在保存上传图像文件名的表单中放置一个隐藏字段来解决这个问题。对于上传本身我使用了现成的库dropzone.js,因为你已经遇到了废弃表单进程的问题我只是决定将文件放在临时位置/ temp 然后如果表单实际完成,那么根据隐藏字段中的值,我将这些图像从/ temp移动到它们的永久位置。然后,可以通过计划作业轻松删除/ temp文件夹中的剩余部分,该作业会检查其创建时间并删除那些旧日期的作业。
希望这会给你一些想法。
答案 1 :(得分:1)
制作1个巨大形式的另一个想法,但是使用JavaScript将其分成几个步骤。只有最后一个标签中的按钮提交表单,而其他按钮只显示下一步。您可以使用" next"进行弱验证。提交表单后,在服务器上执行操作和强验证。
http://jsfiddle.net/ht227xy3/1/
<script>
function switcher(activeBlock, passiveBlocks){
document.getElementById(activeBlock).style.display='';
for (i in passiveBlocks){
if (document.getElementById(passiveBlocks[i]))
document.getElementById(passiveBlocks[i]).style.display='none';
}
return false;
}
</script>
<form onsubmit="alert('Now form submits!!!')" action="" method="post">
<div id="first" class="tab">
<h3>Step 1 of 4</h3>
<b>Field 1:</b> <input type="text" name="field1" value="" /><br />
<br />
<button type="button" onclick="switcher('second', ['first','third','fourth']);">Next</button>
</div>
<div style="display:none;" id="second" class="tab">
<h3>Step 2 of 4</h3>
<b>Alt 1:</b> <input type="text" name="alt1" value="" /><br />
<br />
<button type="button" onclick="switcher('third', ['first','second','fourth']);">Next</button>
</div>
<div style="display:none;" id="third" class="tab">
<h3>Step 3 of 4</h3>
<b>Extra 1:</b> <input type="text" name="extra1" value="" /><br />
<br />
<button type="button" onclick="switcher('fourth', ['first','second','third']);">Next</button>
</div>
<div style="display:none;" id="fourth" class="tab">
<h3>Step 4 of 4</h3>
<b>File 1:</b> <input type="file" name="file1" /><br />
<br />
<input type="submit" value="Submit" />
</div>
</form>