Сценарий: я работаю над 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);
}
I tried:
Код: Выделить всё
formData.append('files', arrayFiles); //removed the index to pass the whole array
Код: Выделить всё
public async Task SaveTest(string test, int saveMode, IFormFile[] files, string deletedElements = "")
Код: Выделить всё
public async Task SaveTest(string test, int saveMode, List files, string deletedElements = "")
Any help?
Edit 1: What I really need to do.
I shortened the code for simplicity, but actually
Код: Выделить всё
what I really need to doКод: Выделить всё
[string, file]

Источник: https://stackoverflow.com/questions/781 ... -controlle
Мобильная версия