我正在尝试使用DropZone js在一个请求中发送多个文件。
这是我的代码:
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone('#upload-Invoices', {
paramName: "files",
maxFilesize: 3.0,
maxFiles: 4,
parallelUploads: 10000,
uploadMultiple: true,
autoProcessQueue: false
});
$('#btnUpload').on('click', function () {
myDropzone.processQueue();
});
控制器:
public void FileUpload( IEnumerable<HttpPostedFileBase> file )
{
// Do Something
}
查看:
<form action="/Index/FileUpload"
class="dropzone"
id="upload-Invoices" data-ajax-method="POST" data-ajax="true">
<input type="submit" value="Upload File to Server" id="btnUpload">
</form>
正在接收文件,虽然在不同的请求中,我想在一个请求中发送所有文件,Dropzone页面有一个选项,虽然它不起作用。 在此先感谢
答案 0 :(得分:3)
您可以使用uploadMultiple属性的默认值false将其更改为true
$(".dropzone").dropzone({
// autoQueue:false,
parallelUploads:10,
uploadMultiple:true,
答案 1 :(得分:2)
不推荐使用enqueueForUpload
属性,而应使用autoProcessQueue
。我的预感是,由于enqueueForUpload
已不再使用且您未将autoProcessQueue
设置为false
,因此DropZone.js假定您要发送每个文件,因为它已被删除在组件上。
您应该删除enqueueForUpload: false
,设置autoProcessQueue: false
,在您选择(即删除)您需要上传的所有文件后,请调用.processQueue()
功能,如{{1}}所述{3}}
答案 2 :(得分:1)
我也看到多个POST,一次发送2个文件(例如,总共4个文件的2个单独的POST)。
我找到了解决方案here:增加parallelUploads
。我现在以下列方式创建dropzone:
var myDropzone = new Dropzone('div#dz', {
url: 'http://httpbin.org/post',
uploadMultiple: true,
parallelUploads: 10
});
答案 3 :(得分:1)
遇到相同的问题,只需将autoDiscover:false添加到您的dropzone选项中,它应该可以工作!
我的选择如下:
Dropzone.options.UploadZone = {
addRemoveLinks: true,
autoDiscover: false,
uploadMultiple: true,
parallelUploads: 10,
maxFiles: 10,
acceptedFiles: ".jpeg,.jpg,.png",
autoProcessQueue: false,
...
使用autoProcessQueue:false和uploadMultiple:true:对于我收到的每个2个文件。
然后我添加了parallelUploads:10和maxFiles:10,我不知道为什么,但是只要将它们放在dropzone上,我的前两个文件就开始上传,即使使用autoProcessQueue:false。
然后我只添加autoDiscover:false,从那里一切正常!
好看!
答案 4 :(得分:0)
我可以看到这是一篇非常古老的文章,但是,我会回答,希望它可以对某人有所帮助。
2个请求
- 选项-没有文件
- POST-带有文件
Chrome会执行飞行前请求(OPTIONS)以查找CORS标头。这是几乎所有最新浏览器都遵循的标准。