我想找到一种方法来上传单个文件*,在后台,让它在文件选择后自动启动,而不需要flash上传器,所以我试图使用两个很棒的机制(jQuery.Form和JQuery) MultiFile)在一起。我没有成功,但我很确定这是因为我遗漏了一些基本的东西。
只需使用MultiFile,我将表单定义如下......
<form id="photoForm" action="image.php" method="post" enctype="multipart/form-data">
文件输入按钮定义为...
<input id="photoButton" "name="sourceFile" class="photoButton max-1 accept-jpg" type="file">
Javascript就是......
$('#photoButton').MultiFile({
afterFileSelect: function(){
document.getElementById("photoForm").submit();
}
});
这完美无缺。一旦用户选择单个文件,MultiFile就会将表单提交给服务器。
如果不是使用MultiFile,如上所示,假设我包含一个Submit按钮以及定义如下的JQuery Form插件......
var options = {
success: respondToUpload
};
$('#photoForm').ajaxForm(options);
......这也很完美。单击“提交”按钮后,表单将在后台上传。
我不知道该怎么办才能让这两者一起工作。如果我使用Javascript提交表单(如上面的MultiFile示例所示),表单已提交,但未调用JQuery.Form函数,因此表单不会在后台提交。
我想也许我需要更改表格注册如下......
$('#photoForm').submit(function() {
$('#photoForm').ajaxForm(options);
});
......但这并没有解决问题。当我尝试.ajaxSubmit而不是.ajaxForm时也是如此。
我错过了什么?
答案 0 :(得分:1)
答案简直令人尴尬。
而不是使用...
以编程方式提交document.getElementById("photoForm").submit();
......我用过......
$("#photoForm").submit();
另外,由于我只需要偶尔上传多个文件,我使用了更简单的技术......
1)表格与我原来的表格相同......
<form id="photoForm" action="image.php" method="post" enctype="multipart/form-data">
2)文件输入字段基本相同......
<input id="photoFile" "name="sourceFile" style="cursor:pointer;" type="file">
3)如果文件输入字段改变,则执行提交......
$("#photoFile").change(function() {
$("#photoForm").submit();
});
4)AjaxForm监听器做了它的事情......
var options = {
success: respondToUpload
};
$('#photoForm').ajaxForm(options);