Jquery 与现有表单集成良好的多文件上传器

Jquery 与现有表单集成良好的多文件上传器,jquery,forms,uploader,Jquery,Forms,Uploader,我知道这个问题可能太笼统了,但在花了一整天的时间之后,我对这个问题很迷茫 有谁知道uploader插件,它可以很容易地与现有表单集成 我尝试过的所有上传插件——jQuery File Upload、Plupload、Uploadify、Dropzone.js——都非常适合提交文件,但不可能集成到现有表单中——通常它们需要队列中的一些文件来提交表单,提交其他表单字段时遇到问题等等 我需要一些简单的东西:用户填写表单,拖动dropzone上的文件(或者不提交,如果他不想提交任何文件),然后提交表单。

我知道这个问题可能太笼统了,但在花了一整天的时间之后,我对这个问题很迷茫

有谁知道uploader插件,它可以很容易地与现有表单集成

我尝试过的所有上传插件——jQuery File Upload、Plupload、Uploadify、Dropzone.js——都非常适合提交文件,但不可能集成到现有表单中——通常它们需要队列中的一些文件来提交表单,提交其他表单字段时遇到问题等等

我需要一些简单的东西:用户填写表单,拖动dropzone上的文件(或者不提交,如果他不想提交任何文件),然后提交表单。我甚至不需要Ajax表单提交(尽管我希望有它)


有什么提示吗?

如果你不想使用Ajax文件上传,那么你不需要使用任何插件。只需使用简单(默认)表单提交(输入提交单击)

这就像添加更多输入字段一样:

<input type="file" name="somename" />
<input type="file" name="somename2" />

现在在服务器端,您需要为每个文件循环。我在ASP.NET方面做得更好,因此,我会告诉您如何在ASP.NET中做到这一点,如果您使用其他语言,您可能仍然会了解主要技巧或想法

for(int i =0; i < numFiles; i++) {
    var uploadedFile = Request.Files[i];
    /* save it! */
}
for(int i=0;i
上面提到的是for循环,其中循环的数量等于随HttpRequest一起发送的文件数量。然后你得到每个文件,然后在上面做你想做的事情


这个很简单!您可以为自己的语言(如PHP等)更改代码。

去掉额外功能后,AJAX文件上传相当容易:

var fd = new FormData(form);

var xhr = new XMLHttpRequest();

xhr.upload.addEventListener("progress", function(e) {
    // Handle progress
}, false);

xhr.addEventListener("load", function(e) {
    if( xhr.status == 200 ) {
        // Handle success
    } else {
        // Handel error
    }
}, false);

xhr.addEventListener("error", function(e) {
    // Handle error
}, false);

xhr.addEventListener("abort", function(e) {
    // Handle abort
}, false);

try {
    xhr.open('POST', 'http://server.com/uploader.php', true);
    xhr.send(fd);
} catch(e) {
    // Handle error
}

谢谢嗯,我很想拥有这些插件提供的拖放、进度条和其他功能——这就是为什么我仍然在寻找一个插件(目前只使用
插件将永远是一件完美的事情!是的,这也是完美的。:)看看。它有一个特性,使得与现有表单的集成变得简单而强大。有关该特定功能的更多信息,请访问。充分披露:我是这个产品的开发者。谢谢!看起来真的很酷。它只是将文件添加到队列中,并在用户提交表单时提交它们吗?它会寻找表单提交作为上传文件的提示。事实上,它将拦截表单提交,然后上载包含任何表单数据的文件,而无需刷新页面。它做的另一件事是下面的答案无法处理的:它将尊重您在表单元素上放置的任何html5表单验证属性。如果你感兴趣的话,我链接到的文档详细介绍了所有这些。我看到了文档,谢谢。我目前正在表单中使用jQuery验证。是否可以使用它的
submitHandler
通过Ajax提交数据?或者是否有其他方法通过Ajax提交整个表单?基本上,我需要的是通过POST一次提交所有表单数据和文件——在我的PHP代码中,我首先在db中创建记录,而不是通过REST API将文件上传到SugarCRM。好的,谢谢,我会尝试一下。