gpt4 book ai didi

javascript - dropzone 多个区域的相同形式

转载 作者:数据小太阳 更新时间:2023-10-29 03:57:18 25 4
gpt4 key购买 nike

我正在制作复杂的表格,我想使用多个(不同的)dropzone.js 来上传文件。

我是这样制作的:

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
... form elements...
<div id="files" name="files" class="dropzone"></div>
}

还有 JS:

Dropzone.options.files = {
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 100,
maxFiles: 100,

paramName: "file", // The name that will be used to transfer the file
maxFilesize: 8, // MB
url: "/pathToAction"
};

我想同时发送文件和表单数据,全部映射到一个对象到 Controller 但是 dropzone 需要有“url”才能接受文件上传...如何解决这个问题?也许我可以获取表单元素的 url 并将其放入 url 参数中?

最佳答案

当我在 google 上搜索时,无法使用相同的 URL 发送一个请求给多个“dropzone”,所以我通过以下步骤手动解决了这个问题:

1) Dropzone 实际上将图像更改为 Base64 字符串以进行缩略图预览,然后将该字符串添加到“img”标签的源中。因此,您需要读取该图像“src”和“alt”,并将它们添加到动态隐藏的输入类型中,如下所示:

    $('#btnUpload').on('click', function () {
$.each($("img[data-dz-thumbnail]"), function( index, value ) {
$('<input>').attr({
type: 'hidden',
name: 'myHiddenFiles[' + index + '].Key',
value: $(value).attr("alt")
}).appendTo('#newsForm');

$('<input>').attr({
type: 'hidden',
name: 'myHiddenFiles[' + index + '].Value',
value: $(value).attr("src")
}).appendTo('#upload-Invoices');
});
$("#upload-Invoices").submit();
});

为您需要发布其数据的每个拖放区重复此代码。

2) 在您的操作方法中,您需要添加一个类型为“Dictionary”的参数,以获取Base64 字符串格式的文件名和文件内容。然后您可以将 Base64 字符串解析为图像,将其存储为文件并将表单数据保存到数据库中。您可以看到相关的代码片段如下:

        [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ModelClass model, IDictionary<string, string> myHiddenFiles)
{
if (ModelState.IsValid)
{
foreach (var file in myHiddenFiles)
{
var base64 = file.Value.Substring(file.Value.IndexOf(',') + 1).Trim('\0');
var bytes = Convert.FromBase64String(base64);

var saveFile = Server.MapPath("~/Images/" + file.Key);
System.IO.File.WriteAllBytes(saveFile, bytes);

// Save your model to database....
}
}
return View();
}

关于javascript - dropzone 多个区域的相同形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29487628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com