我有一个输入文件多选文件,当在输入文件中选择文件时,多分到动态输入文件并将表单提交给服务器。
- 使用 Asp.net MVC
- 使用HttpPostedFileBase f = form[key];获取服务器中的所有文件
- 使用 js 和 jQuery
HTML
外侧形式
<input type="file" name="files" id="files" onchange="readFile(this)" multiple accept="image/png, image/jpeg, image/jpg," capture class="file" style="display:none" value="" />
侧面形式
@using (Html.BeginForm("EditImage", "Client", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="hidden" id="id_client" name="id_client" value="@ViewBag.Client" />
<div class="row">
<div class="col-md-12">
<div class="dropzone dz-clickable" onclick="document.getElementById('files').click()" id="imgZone">
<div class="dz-default dz-message"><span>Click Here to choose file</span></div>
</div>
</div>
<div class="col-md-12">
<br />
<div class="row">
<div class="col-md-6"><p class="btn btn-danger btn-lg disabled btn-block" id="delete" onclick="Clear()">Clear</p></div>
<div class="col-md-6"><input type="button" onclick="Send(this)" name="add" id="add" class="btn btn-success btn-lg disabled btn-block" value="Submit" /></div>
</div>
</div>
</div>
}
用于设置值、创建和预览图像的 jQuery 代码
function readFile(input) {
//CheckFileUpload(input.files.length)
if (input.files && input.files[0]) {
var img, inputID = 0;
for (var i = 0; i < input.files.length; i++) {
var reader = new FileReader();
reader.onload = (function (f) {
return function (e) {
console.table(f);
img = '<div class="dz-preview dz-processing dz-error dz-complete dz-image-preview">';
img += ' <input type="file" id="file_' + inputID + '" name="file_' + inputID + '" class="d-none" value="' + f + '" style="display:none" />';
img += ' <div class="dz-image shadow"><img data-dz-thumbnail="" class="w-100 h-100" alt="banner.jpg" src="' + e.target.result + '"></div>';
img += ' <div class="dz-details">';
img += ' <div class="dz-size"><span data-dz-size="">' + formatBytes(f.size) + '</span></div>';
img += ' <div class="dz-filename"><span data-dz-name="">' + f.type + '</span></div>';
img += ' <div class="mt-1 btn btn-danger btn-delete"><i class="fas fa-trash"></i></div>';
img += ' </div>';
img += '</div>';
$('#imgZone').append(img);
inputID++;
}
})(input.files[i]);
reader.readAsDataURL(input.files[i]);
}
}
}
C#代码{在服务器站点(获取文件的服务器代码)}
public ActionResult EditImage(long? id_client)
{
//For testing
//var filesRequest = Request.Files;
//HttpPostedFileBase file = filesRequest["file_1"];
var files = new HttpPostedFile[Request.Files.Count];
Request.Files.CopyTo(files, 0);
if (files == null)
return RedirectToAction("Detail", new { id = id_client });
if (files[0] != null)
FileUpload(id_client, "~\\Documents\\Client\\boards\\", files);
return RedirectToAction("ViewImage", new { id = id_client, camBack = false });
}
当提交表单文件不为空但文件名为空时
文件输出 为什么文件名是空的?
文件输出 当提交表单时所有输入 POST 但内容长度等于 0 并且文件名为空
**总结我的报价**
- 如何通过我的方式(我的代码)在服务器站点中归档?
- 我不知道服务器站点或客户端站点的问题!
- 如果有任何方式都没有问题,并且所有更改代码为新方式