Asp. Net Core - невозможно загрузить файлы из Dropzone JS - PullRequest
2 голосов
/ 04 апреля 2020

Я использую asp. net core 2.2 с dropzone js.

Я пытаюсь отправить форму вместе с файлами, содержащимися в dropzone js.

У меня есть поле входного файла (может быть скрыто или не скрыто). Я хочу назначить в этом поле файлы dropzone и отправить его. Но поле Forms всегда равно нулю.

Вот код:

MVC Контроллер:

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Add(ViewModels.Photo model)
{
    var files = HttpContext.Request.Form.Files; // this is also empty
    ....
}

MVC Модель:

public class Photo
{
    ...

    public List<IFormFile> Files { get; set; }
}

HTML:

<form asp-action="Add" asp-controller="Photos" method="post" id="addForm" enctype="multipart/form-data">
    <div class="dropzone">
        <input asp-for="Files" type="file" multiple hidden/>
    </div>
    <button type="submit">Submit</button>
</form>

JS:

var e = "#addForm",
var t = new Dropzone(e, {
    maxFilesize: 1,
    acceptedFiles: ".png,.jpg,.jpeg",
    uploadMultiple: false,
    autoProcessQueue: false
});
t.on("addedfile", function (o) {
    $("#Files").files = t.files;
})

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Мне удалось заставить все работать, и это было незначительное исправление.

Я изменил код ниже

$("#Files").files = t.files;

на

$("#Files").files = t.hiddenFileInput.files;

t.files является массив файлов, захваченных dropzone, где t.hiddenFileInput.files является объектом FileList файлов, захваченных dropzone.

$("#Files").files также является объектом FileList, поэтому t.files не работал из-за несоответствия типов.

Теперь он отправляет поля формы вместе с файлами с механизмом отправки по умолчанию.

1 голос
/ 04 апреля 2020

Вы можете использовать другой метод подписи действия

[HttpPost]
public ActionResult Add(HttpPostedFileBase file)
{
    //handle file.InputStream
}

В этом примере показана загрузка файлов один за другим: https://gillesleblanc.wordpress.com/2017/01/25/integrating-dropzone-js-into-an-asp-net-mvc-site/

...