我正在使用带dropzone js的asp.net core 2.2。
我正在尝试提交一个表格以及dropzone js中包含的文件。
我有一个输入文件字段(可以隐藏也可以不隐藏)。我想将dropzone文件分配给该字段并提交。但是“表单”字段始终为空。
这是代码:
MVC控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Add(ViewModels.Photo model)
{
var files = HttpContext.Request.Form.Files; // this is also empty
....
}
MVC模型:
public class Photo
{
...
public List<IFormFile> Files { get; set; }
}
HTML:
<form asp-action="Add" asp-controller="Photos" method="post" id="addForm" enctype="multipart/form-data">
<div class="dropzone">
<input asp-for="Files" type="file" multiple hidden/>
</div>
<button type="submit">Submit</button>
</form>
JS:
var e = "#addForm",
var t = new Dropzone(e, {
maxFilesize: 1,
acceptedFiles: ".png,.jpg,.jpeg",
uploadMultiple: false,
autoProcessQueue: false
});
t.on("addedfile", function (o) {
$("#Files").files = t.files;
})
我设法使事情正常进行,这是次要的修复。
我更改了以下代码
$("#Files").files = t.files;
至
$("#Files").files = t.hiddenFileInput.files;
t.files
是dropzone捕获的文件的数组,而dropzone捕获的文件t.hiddenFileInput.files
的FileList
对象也是。
该$("#Files").files
也是一个FileList
对象,这就是为什么t.files
不工作,由于类型不匹配。
现在,它使用默认的提交机制提交表单字段以及文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句