多文件上传测试(转)
2010-08-14 20:41 音乐让我说 阅读(724) 评论(0) 收藏 举报转载自孟子E章 :http://dotnet.aspx.cc/article/58ea3515-36f2-4fd9-ac89-eaf49f59816c/read.aspx
前台代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestUpload.aspx.cs" Inherits="WebUI.TestUpload" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>多文件上传测试</title>
<script language="javascript" type="text/javascript">
function addFile()
{
var div = document.createElement("div");
var f = document.createElement("input");
f.setAttribute("type", "file");
f.setAttribute("name", "File");
f.setAttribute("size", "50");
div.appendChild(f);
var d = document.createElement("input");
d.setAttribute("type", "button");
d.onclick = function() { deleteFile(this); }
d.setAttribute("value", "移除");
div.appendChild(d);
document.getElementById("_container").appendChild(div);
}
function deleteFile(o)
{
while (o.tagName != "DIV")
{
o = o.parentNode;
};
o.parentNode.removeChild(o);
}
</script>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<h3>
多文件上传</h3>
用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<div id="_container">
<input type="file" size="50" name="File" />
</div>
<div>
<input type="button" value="添加文件(Add)" onclick="addFile()" />
</div>
<div style="padding: 10px 0">
<asp:Button runat="server" Text="开始上传" ID="UploadButton" OnClick="UploadButton_Click">
</asp:Button>
</div>
<div>
<asp:Label ID="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt"
Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>
</div>
</form>
</body>
</html>
后台代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebUI
{
public partial class TestUpload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void UploadButton_Click(object sender, EventArgs e)
{
//遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;
//状态信息
System.Text.StringBuilder strMsg = new System.Text.StringBuilder("您输入的用户名是:" + TextBox1.Text + "<br/>");
strMsg.Append("上传的文件分别是:<hr color='red'/>");
try
{
for (int i = 0; i < files.Count; i++)
{
//检查文件扩展名字
HttpPostedFile postedFile = files[i];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
strMsg.Append("上传文件的文件名:" + fileName + "<br>");
strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");
//可根据扩展名字的不同保存到不同的文件夹
//注意:可能要修改你的文件夹的匿名写入权限。
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/") + fileName);
}
}
strStatus.Text = strMsg.ToString();
}
catch (Exception Ex)
{
strStatus.Text = Ex.Message;
}
}
}
}
最简单的文件上传
View 层:
@{ ViewBag.Title = "主页"; } <h2>文件上传</h2> <div> @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input type="file" name="FileUpload1" /><br /><br /><br /> <input type="file" name="FileUpload2" /><br /><br /><br /> <input type="file" name="FileUpload3" /><br /><br /><br /> <input type="file" name="FileUpload4" /><br /><br /><br /> <input type="file" name="FileUpload5" /><br /><br /><br /> <input type="submit" name="Submit" id="Submit" value="上传" /> } </div>
Controller 层:
public class HomeController : Controller { public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(FormCollection form) { // 注意,别忘了在 Web.Config 中配置最大支持的文件大小,我这里设置的是 512 MB // <!-- 最大上传 512MB = 1024 * 512 = 524288 KB --> // <httpRuntime maxRequestLength="524288"/> foreach (string upload in Request.Files) { // 注意:枚举器返回的是 System.String,千万不要放置 System.Web.HttpPostedFileBase ,否则会抛出下面的异常: // 注意:无法将类型为“System.String”的对象强制转换为类型“System.Web.HttpPostedFileBase”。 if (!Request.Files[upload].HasFile()) { continue; } string dirPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "uploads"); if (!Directory.Exists(dirPath)) { try { Directory.CreateDirectory(dirPath); } catch (Exception) { throw new Exception("创建目录失败!请练习管理员"); } } string filename = Path.GetFileName(Request.Files[upload].FileName); Request.Files[upload].SaveAs(Path.Combine(dirPath, filename)); } return View(); } public ActionResult About() { return View(); } } public static class WebExtensions { /// <summary> /// 判断是否有文件 /// </summary> /// <param name="file"></param> /// <returns></returns> public static bool HasFile(this HttpPostedFileBase file) { return (file != null && file.ContentLength > 0) ? true : false; } }
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
浙公网安备 33010602011771号