我正在使用 javascript 库 DropZone.js但上传多个文件在 ASP.Net MVC 中无法正常工作。
有效的方法是当我设置 Dropzone 选项“autoProcessQueue: true”并且 MVC Controller 参数名称“inputFiles”可以看到输入文件确实成功上传到服务器。然而,这意味着图像的上传会自动发生,用户没有机会单击表单提交按钮。 (我认为这就是为什么他们称之为 DROPZone - 自动上传)
无论如何,我想让用户在上传之前单击提交按钮,因此我设置了选项“autoProcessQueue: false”,但在表单提交上, Controller 上的参数名称“inputFiles”始终返回 null。
<form action="/home" method="post" enctype="multipart/form-data" class="dropzone dz-clickable form-horizontal form-bordered" id="dropzoneForm">
<div class="form-group form-actions">
<div class="col-md-9 col-md-offset-4">
<button type="submit" class="btn btn-sm btn-primary"><i class="fa fa-floppy-o"></i> Upload</button>
</div>
</div>
</form>
<script>
$(function () {
Dropzone.options.dropzoneForm = {
paramName: "inputFiles", // The name that will be used to transfer the file
autoProcessQueue: true,
uploadMultiple: false,
parallelUploads: 100,
accept: function (file, done) {
done();
}
};
});
</script>
[HttpPost]
public ActionResult Index(IEnumerable<HttpPostedFileBase> inputFiles)
{
string fName = "";
foreach (HttpPostedFileBase fileName in inputFiles)
{
HttpPostedFileBase file = fileName;
//Save file content goes here
fName = file.FileName;
if (file != null && file.ContentLength > 0)
{
var originalDirectory = new DirectoryInfo(string.Format("{0}Images\\WallImages", Server.MapPath(@"\")));
string pathString = System.IO.Path.Combine(originalDirectory.ToString(), "imagepath");
var fileName1 = Path.GetFileName(file.FileName);
bool isExists = System.IO.Directory.Exists(pathString);
if (!isExists)
System.IO.Directory.CreateDirectory(pathString);
var path = string.Format("{0}\\{1}", pathString, file.FileName);
file.SaveAs(path);
}
}
return View();
}
有人尝试过使用 DropZone.js 吗?
最佳答案
您可以使用以下命令,而不是在操作中使用参数:
[HttpPost]
public ActionResult Index()
{
string fName = "";
foreach (var fileName in Request.Files.AllKeys)
{
var file = Request.Files[fileName];
//Save file content goes here
fName = file.FileName;
if (file != null && file.ContentLength > 0)
{
var originalDirectory = new DirectoryInfo(string.Format("{0}Images\\WallImages", Server.MapPath(@"\")));
string pathString = System.IO.Path.Combine(originalDirectory.ToString(), "imagepath");
var fileName1 = Path.GetFileName(file.FileName);
bool isExists = System.IO.Directory.Exists(pathString);
if (!isExists)
System.IO.Directory.CreateDirectory(pathString);
var path = string.Format("{0}\\{1}", pathString, file.FileName);
file.SaveAs(path);
}
}
return View();
}
等等...不确定它是否有效..无法尝试,但想法是usign
Request.Files
希望这有帮助!
关于javascript - DropZone.js 使用 ASP.Net MVC 上传多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079667/