JQuery + C# (.Net 8): передача массива файлов форм из Ajax в контроллерJquery

Программирование на jquery
Ответить
Anonymous
 JQuery + C# (.Net 8): передача массива файлов форм из Ajax в контроллер

Сообщение Anonymous »


Сценарий: я работаю над API .Net 8, и мне нужно передать данные формы, состоящие из файлов и других элементов формы, в контроллер через ajax.
Я возможность успешно передать один файл, но странно то, что невозможно передать массив файлов.
(Я сократил код для простоты)
< р>

Код: Выделить всё

Javascript
:

Код: Выделить всё

let arrayFiles = [];
arrayFiles.push(fileSelector.files[0]);

formData.append('files', arrayFiles[0]);
formData.append('test', test);
formData.append('saveMode', saveMode);
formData.append('deletedElements', deletedElements);

$.ajax({
url: '/Test/SaveTest',
method: 'POST',
contentType: false,
processData: false,
data: formData,
success: function (res) {
},
error: function () {
}
})

Код: Выделить всё

Controller
:

Код: Выделить всё

public async Task SaveTest(string test, int saveMode, IFormFile files, string deletedElements = "")
{
var deletedQuestions = deletedElements.DeserializeNodeToList("DeletedQuestions");
var deletedAnswers = deletedElements.DeserializeNodeToList("DeletedAnswers");

var testDto = test.DeserializeTest(deletedQuestions, deletedAnswers);
if (testDto == null) return Json(new { Success = false });

var saveResult = await _service.CreateTestAsync(testDto, saveMode);
return Json(saveResult);
}
This way I'm receiving one IFormFile object from form with no problems, but the fact is I need to pass multiple files.
I tried:

Код: Выделить всё

formData.append('files', arrayFiles); //removed the index to pass the whole array
plus:

Код: Выделить всё

public async Task SaveTest(string test, int saveMode, IFormFile[] files, string deletedElements = "")
or

Код: Выделить всё

public async Task SaveTest(string test, int saveMode, List files, string deletedElements = "")
to no avail.
Any help?
Edit 1: What I really need to do.
I shortened the code for simplicity, but actually

Код: Выделить всё

what I really need to do
is to pass an array of type:

Код: Выделить всё

[string, file]
to controller, where the "string" will contain a customized name of the file and "file" the file object itself.
Изображение



Источник: https://stackoverflow.com/questions/781 ... -controlle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»