无法使FormData与控制器接触

时间:2019-05-05 15:32:58

标签: javascript c# html asp.net model-view-controller

我正在尝试使用asp-net制作MVC应用程序。在此应用程序中,我希望能够将文件上传到服务器。这可以通过简单的input type='file'按钮进行,但是后来我尝试使其看起来更好,并遵循了this教程。

除了将粘贴到控制器的FormData对象为空而不包含图像之外,它在大多数情况下都是有效的。

我试图使ajax函数的Javascript文件与我以前使用的函数相同,但是仍然无法正常工作。

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代码,当将文件对象附加到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');被调用,但控制器中的文件对象为空,而不包含图像对象。

0 个答案:

没有答案