Я пытаюсь сделать MVC-приложение с asp-net. В этом приложении я хочу иметь возможность загружать файл на сервер. Это работало с простой кнопкой input type='file'
, но затем я попытался сделать ее лучше и следовал этому руководству.
Это работало по большей части за исключением того, что объект FormData, который вставляется в контроллер, пуст вместо того, чтобы содержать изображение.
Я пытался сделать файл Javascript с функцией ajax таким же, как и у меня, но он все равно не работал.
HTML-код:
<div class="container">
<br>
<br>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-md-3">Upload Image</label>
<div class="col-md-8">
<div class="row">
<div id="coba"></div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3"></label>
<div class="col-md-8">
<div></div>
<input type="submit" class="btn btn-primary" value="Send">
</div>
</div>
</div>
</div>
Код Javascript, объект files содержит изображение, когда оно добавляется к объекту FormData. Fdata:
function actionDirectUpload(settings, input, parent) {
var index = $(input).data('spartanindexinput');
var fdata = new FormData();
var files = input.files;
var additionalParam = settings.directUpload.additionalParam;
$(parent).find('[data-spartanindexloader="' + index + '"]').css('display', 'flex');
fdata.append('file', files[0]);
if (typeof additionalParam != 'undefined') {
$.each(additionalParam, function (key, value) {
fdata.append(key, value);
});
}
$.ajax({
url: settings.directUpload.url,
data: fdata,
cache: false,
processData: false,
contentType: false,
type: "POST",
success: function (data, textStatus, jqXHR) {
$(parent).find('[data-spartanindexloader="' + index + '"]').css('display', 'none');
if (typeof settings.directUpload.success != 'undefined') {
settings.directUpload.success(this, data, textStatus, jqXHR);
}
alert("succes!");
},
error: function (jqXHR, textStatus, errorThrown) {
$(parent).find('[data-spartanindexloader="' + index + '"]').css('display', 'none');
if (typeof settings.directUpload.error != 'undefined') {
settings.directUpload.error(this, jqXHR, textStatus, errorThrown);
}
}
});
}
А это Контроллер:
[HttpPost]
public IActionResult Index(IList<IFormFile> files)
{
foreach(IFormFile item in files) {
string filename = ContentDispositionHeaderValue.Parse(item.ContentDisposition).FileName.Trim('"');
filename = this.EnsureFilename(filename);
using (FileStream filestream = System.IO.File.Create(this.GetPath(filename)))
{
}
}
return this.Content("Success");
}
Вызывается alert('succes');
, но объект files в контроллере пуст вместо того, чтобы содержать объект изображения.