我正在尝试使用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');
被调用,但控制器中的文件对象为空,而不包含图像对象。