dhl: ASP.NET MVC1.0 的图片(文件)上传功能
知识点:System.Web(System.Web.Abstractions.dll) 的成员HttpPostedFileBase类
实例1单文件上传:
前台 :
<% using (Html.BeginForm("upload", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<input type="file" name="upfile" />
<input type ="submit" name ="upload" value ="上传" />
<%} %>
后台 :
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult upload(HttpPostedFileBase upfile)
{
if (upfile != null)
{
if (upfile.ContentLength > 0)
{
upfile.SaveAs("d:\\7.jpg");
}
}
return Content(upfile.FileName);
}
实例2多文件上传:
前台 :
<form action="<%=Url.Action("upload2") %>" enctype="multipart/form-data" method="post">
<input name="up1" type="file" />
<input name="up2" type="file" />
<input type="submit" />
</form>
后台:
public ActionResult upload2()
{
try
{
HttpFileCollectionBase files = Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFileBase postedFile = files[iFile];
string fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (!string.IsNullOrEmpty(fileName))
{
postedFile.SaveAs("d:\\" + fileName);
}
}
TempData["info"] = "成功";
return RedirectToAction("Warn");
}
catch (Exception ex)
{
TempData["info"] = "Err" + ex;
return RedirectToAction("Warn");
}
}
注意:
多文件上传中,获得图片只能用:for - Requst.File[""]
而不能用以下foreach() 我也不知道为什么。(可能是HttpFileCollectionBase不是HttpPostedFileBase的集合,HttpFileCollectionBase..::.Item 屬性 是(String)类型,参考:http://msdn.microsoft.com/zh-tw/library/cc680819.aspx)
HttpFileCollectionBase files = Request.Files;
foreach (HttpPostedFileBase fileBase in files)
{
fileBase.SaveAs("d:\\a.jpg");
}
所以用Foreach的话就这样写:
foreach (string fileBase in files)
{
HttpPostedFileBase postedFile = files[fileBase];
string fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (!string.IsNullOrEmpty(fileName))
{
postedFile.SaveAs("d:\\" + fileName);
}
}

浙公网安备 33010602011771号