清除后,Bootstrap FileUpload为空数组

时间:2013-07-02 20:57:53

标签: twitter-bootstrap file-upload jasny-bootstrap

您可以在此处查看问题http://bmi.sf.net/test.html

对于我使用的确切代码,请右键单击此网站并在菜单中选择View source

我正在使用Jasny bootstrap fileupload插件。我有一个使用此插件的表单。表单提交到一个php文件,其中操作$ _FILES数组。

在上面的代码中,我使用了jQuery表单插件来查看表单提交的实时预览。 php正在做一件事:print_r($_FILES)

除非发生以下一系列操作,否则它的工作正常,$ _FILES数组为空:

  • 用户选择文件。显示正常的php输出。
  • 然后用户使用“x”按钮清除表单。按预期显示空数组。
  • 用户加载新文件。现在数组是空的,不期望。

如何解决这个问题?

如果用户不首先清除表单但直接加载新文件,则数组不为空。但是每个用户都不会这样做,所以我想解决给定的问题。

1 个答案:

答案 0 :(得分:1)

看起来像竞争条件。 fileupload插件清除<input type="file">的名称并设置<input type="hidden">以告知服务器按下清除或提交而不更改正常形式之间的区别。但是在您的情况下,您不希望出现这种情况。

对于快速而肮脏的修复,请始终在更改时设置<input type="file">的名称。

$('#filep').on('change', function() { $(this).attr('name', 'filep') });