Я собираюсь отправить файл формы с изображениями и дополнительной информацией, такой как height
и width
.Я не могу понять, как добавить некоторые пользовательские реквизиты в объект формы файла.
$("#saveImg").on('click', function () {
var formData = new FormData(),
allFiles = [];
$('input[name=fileUpload]').each(function (index) {
if (inputFileValidation(this)) {
(function (files) {
if (files.length != 0) { allFiles.push(files[0]); }
})(this.files)
}
});
for (var i = 0; i != allFiles.length; i++) {
var img = new Image()
img.src = window.URL.createObjectURL(allFiles[i]);
$(img).on('load', function () {
formData.append("files_h", img.naturalHeight);
formData.append("files_w", img.naturalWidth);
formData.append("files", allFiles[i]);
window.URL.revokeObjectURL(allFiles[i]);
});
}
$.ajax({
url: '@Url.Action("Upload", "Image")',
data: formData,
processData: false,
contentType: false,
type: "POST",
success: function () {}
errors: function () {}
});
});
[HttpPost]
public async Task<IActionResult> Upload (IList<IFormFile> files)
{
//do something ;
}
Я также пытался:
[HttpPost]
public async Task<IActionResult> Upload (IList<IFormFile> files, IList<IFormFile> files_h, IList<IFormFile> files_w)
{
//do something ;
}
Может быть, у вас есть другая идея, как отправить изображение с дополнительнымиданные?Я попытался преобразовать форму файла и дополнительную информацию в JSON, но это не сработало.
Редактировать Спасибо всем за ваши предложения, они действительно важны для меня, потому что я обязательно их используюв будущем.
Однако в этом проекте я уже отказался от использования file reader
из-за его asynchrony
и получал удовольствие от promise
.Цель проста и менее javascript
и более c#
Я прошу прощения за то, что ввел вас в заблуждение в названиях javascript
и jquery
- и отмечу ответ, связанный с c #
.Я сделал это, потому что этот ответ связан с моей следующей задачей, потому что библиотека CoreCompat.System.Drawing
, несомненно, все еще полезна для редактирования фотографий в будущем.
Спасибо !!