Подтвердить что ты не робот

Загрузить несколько файлов в один запрос Dropzone, отправляющий два запроса

Я пытаюсь отправить несколько файлов за один запрос с помощью 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 есть опция, хотя она не работает. Заранее спасибо

4b9b3361

Ответ 1

Проблема заключалась в том, что я использовал вход type="submit", который сам делал бы другой пост, меняя его на тип button.

Ответ 2

Вы можете использовать значение по умолчанию для свойства uploadMultiple false, изменив его на true

$(".dropzone").dropzone({
            // autoQueue:false,
            parallelUploads:10,
            uploadMultiple:true,

Ответ 3

Свойство enqueueForUpload устарело, и вместо этого вы должны использовать autoProcessQueue. Моя догадка такова, что, поскольку enqueueForUpload больше не используется, и вы не устанавливаете autoProcessQueue в false, DropZone.js предполагает, что вы хотите отправить каждый файл, так как он отбрасывается на компонент.

Вы должны удалить enqueueForUpload: false, установить autoProcessQueue: false и после того, как вы выбрали (то есть сбросили) все файлы, которые нужно загрузить, вызовите функцию .processQueue(), как описано в .

Ответ 4

Я также видел несколько POST с двумя файлами, отправляемыми одновременно (например, 2 отдельных POST для 4 файлов).

Я нашел решение здесь: увеличение parallelUploads. Теперь я создаю дропзону следующим образом:

var myDropzone = new Dropzone('div#dz', {
  url: 'http://httpbin.org/post',
  uploadMultiple: true,
  parallelUploads: 10
});

Ответ 5

Я вижу, что это очень старый пост, но я отвечу в надежде, что он кому-нибудь поможет.

2 запроса

  1. ОПЦИИ - нет файлов
  2. POST - с файлами

Chrome выполнит предполетный запрос (ОПЦИИ) для поиска заголовков CORS. Это стандарт, которому следуют почти все последние браузеры.