Ответ 1
Проблема заключалась в том, что я использовал вход type="submit"
, который сам делал бы другой пост, меняя его на тип button
.
Я пытаюсь отправить несколько файлов за один запрос с помощью 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 есть опция, хотя она не работает. Заранее спасибо
Проблема заключалась в том, что я использовал вход type="submit"
, который сам делал бы другой пост, меняя его на тип button
.
Вы можете использовать значение по умолчанию для свойства uploadMultiple false, изменив его на true
$(".dropzone").dropzone({
// autoQueue:false,
parallelUploads:10,
uploadMultiple:true,
Свойство enqueueForUpload
устарело, и вместо этого вы должны использовать autoProcessQueue
. Моя догадка такова, что, поскольку enqueueForUpload
больше не используется, и вы не устанавливаете autoProcessQueue
в false
, DropZone.js предполагает, что вы хотите отправить каждый файл, так как он отбрасывается на компонент.
Вы должны удалить enqueueForUpload: false
, установить autoProcessQueue: false
и после того, как вы выбрали (то есть сбросили) все файлы, которые нужно загрузить, вызовите функцию .processQueue()
, как описано в .
Я также видел несколько POST с двумя файлами, отправляемыми одновременно (например, 2 отдельных POST для 4 файлов).
Я нашел решение здесь: увеличение parallelUploads
. Теперь я создаю дропзону следующим образом:
var myDropzone = new Dropzone('div#dz', {
url: 'http://httpbin.org/post',
uploadMultiple: true,
parallelUploads: 10
});
Я вижу, что это очень старый пост, но я отвечу в надежде, что он кому-нибудь поможет.
2 запроса
- ОПЦИИ - нет файлов
- POST - с файлами
Chrome выполнит предполетный запрос (ОПЦИИ) для поиска заголовков CORS. Это стандарт, которому следуют почти все последние браузеры.