ASP.NET MVC一括ファイルアップロード
プロジェクトの必要に応じて、ASP.NETMVCで一括ファイルアップロードを実現.まず、単一ファイルのアップロードを紹介します.次に、マルチファイルアップロードの実装方法について説明します.
単一ファイルアップロードの原理は、ファイルデータをrequestに格納し、ページからバックグラウンドcontrollerに直接転送し、viewとcontrollerの間でパラメータを転送し、コードに直接コメントを貼ることです.Upload.aspxファイルのコード:
Controllerのコード:
ここで注意しなければならないのは、ASP.NETではrequestのデフォルトサイズは4 Mなので、大きなファイルをアップロードするにはWebを変更する必要があります.config.
jsによってユーザーのニーズに応じてアップロードコントロールを動的に追加し、複数のファイルをrequestによってcontrollerに一括してアップロードすることを考えています.Upload.aspxファイルのコード:
Controllerのコード:
注意Request.Filesでは、異なるファイルのindexはアップロードコントロールのname属性値であるため、aspxページコードでは複数のアップロードコントロールのname属性値が互いに異なることを保証する必要があります.以上で一括ファイルアップロードを実現しました.私はやっと浅学で、ただみんなの参考に供して、もし不当なところがあれば、みんなに批判して指摘してください!
一、単一ファイルアップロード
単一ファイルアップロードの原理は、ファイルデータをrequestに格納し、ページからバックグラウンドcontrollerに直接転送し、viewとcontrollerの間でパラメータを転送し、コードに直接コメントを貼ることです.Upload.aspxファイルのコード:
Controllerのコード:
[HttpPost]
public ActionResult Upload(FormCollection form)
{
if (Request.Files.Count == 0){
//Request.Files.Count 0
return View();
}
var file = Request.Files[0];
if (file.ContentLength == 0){
// ( ) 0 ,
return View();
}
else{
// 0
file = Request.Files[0]; // UpLoadFile
string target = Server.MapPath("/")+("/Mock/Learning/");//
string filename = file.FileName;//
string path = target + filename;//
file.SaveAs(path);}
return View();
}
ここで注意しなければならないのは、ASP.NETではrequestのデフォルトサイズは4 Mなので、大きなファイルをアップロードするにはWebを変更する必要があります.config.
<system.web>
<httpRuntime maxRequestLength="40960"/>
system.web>
二、一括ファイルアップロード
jsによってユーザーのニーズに応じてアップロードコントロールを動的に追加し、複数のファイルをrequestによってcontrollerに一括してアップロードすることを考えています.Upload.aspxファイルのコード:
<form enctype="multipart/form-data" method="post">
<div id="FileList">
<div>
<input type="file" id="file" name="file0"/>
div>
div>
<p>
<a onclick="AddFile();"> a>
p>
<p>
<input type="submit" value=" " />
p>
form>
<script>
var index = 1;
function AddFile() {
var ul = document.getElementById("FileList");
var inputDiv = document.createElement("div");
inputDiv.setAttribute("Id", "div" + index);
var file = document.createElement("input");
file.setAttribute("type", "file");
file.setAttribute("id", "file" + index);
file.setAttribute("name", "file" + index);
var btnDel = document.createElement("input");
btnDel.setAttribute("type", "button");
btnDel.setAttribute("value", " ");
btnDel.setAttribute("Id", index);
btnDel.onclick = function() {
inputDiv.removeChild(file);
inputDiv.removeChild(btnDel);
ul.removeChild(inputDiv);
}
inputDiv.appendChild(file);
inputDiv.appendChild(btnDel);
ul.appendChild(inputDiv);
index++;
}
script>
Controllerのコード:
[HttpPost]
public ActionResult Upload(FormCollection form)
{
foreach (string item in Request.Files)
{
HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
if (file==null || file.ContentLength == 0)
continue;
// Upload ,
string path = Server.MapPath("..//Upload");
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
path = AppDomain.CurrentDomain.BaseDirectory + "Upload/";
//
string fileName = file.FileName;
//
file.SaveAs(Path.Combine(path,fileName));
}
return Content("alert(' ');window.history.back(); ");
}
注意Request.Filesでは、異なるファイルのindexはアップロードコントロールのname属性値であるため、aspxページコードでは複数のアップロードコントロールのname属性値が互いに異なることを保証する必要があります.以上で一括ファイルアップロードを実現しました.私はやっと浅学で、ただみんなの参考に供して、もし不当なところがあれば、みんなに批判して指摘してください!