Не удается получить данные FormData для контроллера - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь сделать 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 в контроллере пуст вместо того, чтобы содержать объект изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...