我正在使用带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;
})
答案 0 :(得分:1)
您可以使用该操作的其他方法签名
[HttpPost]
public ActionResult Add(HttpPostedFileBase file)
{
//handle file.InputStream
}
此示例显示了一个一个地上传文件:https://gillesleblanc.wordpress.com/2017/01/25/integrating-dropzone-js-into-an-asp-net-mvc-site/
答案 1 :(得分:1)
我设法使事情正常进行,这是次要的修复。
我更改了以下代码
$("#Files").files = t.files;
到
$("#Files").files = t.hiddenFileInput.files;
t.files
是dropzone捕获的文件数组,其中t.hiddenFileInput.files
是dropzone捕获的文件的FileList
对象。
$("#Files").files
也是一个FileList
对象,这就是t.files
由于类型不匹配而无法工作的原因。
现在,它使用默认的提交机制提交表单字段以及文件。