【发布时间】:2020-08-17 06:01:07
【问题描述】:
我将 Dropzone.js 与 .net core 3.1 一起使用。我可以让它调用我的控制器操作,但我不能让它随请求发送任何额外的数据。
这是我的表格:
<form action="/api/photos/"
class="dropzone needsclick dz-clickable"
id="image-upload"
method="post">
<input type="hidden" name="eventId" value="1"/>
<div class="dz-message needsclick">
<span class="note needsclick">
Drop files here or click to upload.
</span>
</div>
</form>
这是我的 Javascript:
<script>
Dropzone.options.imageUpload = {
dictDefaultMessage: "Drop files here or Click to Upload",
addRemoveLinks: true, // Allows for cancellation of file upload and remove thumbnail
init: function () {
myDropzone = this;
myDropzone.on("sending", function (file, xhr, data) {
data.append("message", "hello world");
console.log(data);
});
myDropzone.on("success", function (file, response) {
console.log("Success");
myDropzone.removeFile(file);
});
}
};
</script>
这是我的控制器端点
public async Task<IActionResult> PostPhoto(List<IFormFile> file)
{
..code removed..
}
所以你可以看到我在表单中有一个隐藏字段,它应该与请求一起发送数据,我也尝试通过 JS 向表单数据附加一个值,但要么它没有发送或者我找不到。我查看了开发工具的网络面板,可以看到正在发送的图像,但没有别的。或者如果正在发送它,我将如何在控制器中找到它?我在这上面花了很长时间,这有点烦人,请帮忙!
【问题讨论】:
-
看起来您的控制器只接受文件,并且您尝试使用 enctype="multipart/form-data" 发送 JSON 数据,您必须使用 enctype="application/json" 发送常规 JSON数据。
-
我从表单中删除了 enctype,但仍然没有运气 - 根据 dropzone 网站上的“提示”部分,“Dropzone 将提交您在 dropzone 表单中的所有隐藏字段。所以这是提交附加数据的简单方法。您也可以使用 params 选项。"。这些方法都不适合我。
标签: javascript asp.net-core dropzone.js razor-pages