使用ASP.NET上传多个文件到服务器
2013-10-13 19:21
417 查看
在Email系统中经常会上传多个文件到服务器,用户大多习惯一次上传所有的文件,而不是逐个上传,我们可以使用javascript动态地添加file元素到表单,然后在服务器端处理这些file
效果图如下:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/amandag/EntryImages/20090319/MutlileFileUpload.JPG)
页面代码MutlileFileUpload.aspx如下:
[html] view
plaincopy
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MutlileFileUpload.aspx.cs"
Inherits="MutlileFileUpload" %>
<!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>
<title>多文件上传到服务器Demo</title>
<link href="css/writemail.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
<!--
var MAXFILES = 5; //文件计数器
var fileCount = 0;
function addAttach(noAlert) {
if (fileCount >= MAXFILES && !noAlert) { alert("最多只能添加" + MAXFILES + "个附件!"); return; }
var fileSectionDiv = document.getElementById("files");
var fileItemDiv = document.createElement("div");
fileCount++;
var content = "<input type='file' onchange='return addAttach(true);' name='fileUpload'" + fileCount + "> <a href='#' onclick='return delAttach(\"" + fileCount + "\")' class='delete_attach' >移除附件</a>";
fileItemDiv.id = "fileItemDiv" + fileCount;
fileItemDiv.innerHTML = content;
fileSectionDiv.appendChild(fileItemDiv);
return false;
}
function delAttach(fileIndex) {
var fileSectionDiv = document.getElementById("files");
var fileItemDiv = document.getElementById("fileItemDiv" + fileIndex);
fileSectionDiv.removeChild(fileItemDiv);
fileCount--;
return false;
} //
--></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a id="addAttach_a" onclick="return addAttach(false);" href="#" class="add_attach">添加附件</a>
<div id="files">
</div>
<asp:Button ID="btnSend" runat="server" Text="发送" OnClick="btnSend_Click" />
</div>
</form>
</body>
</html>
样式表WriteMail.css代码如下:
[css] view
plaincopy
.delete_attach {PADDING-LEFT: 18px; BACKGROUND: url(../images/deleteattch_icon.gif) no-repeat left top; MARGIN-LEFT: 7px; WIDTH: 90px; COLOR: #002f76}.add_attach {PADDING-LEFT: 22px; BACKGROUND: url(../images/attach.gif) no-repeat left center; WIDTH: 90px; COLOR: #002f76}
后台代码MutlileFileUpload.aspx.cs如下:
[csharp] view
plaincopy
using System;
using System.IO;
using System.Web.UI;
public partial class MutlileFileUpload : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{ //告诉表单如何格式化文件信息
Page.Form.Enctype = "multipart/form-data";
}
protected void btnSend_Click(object sender, EventArgs e)
{
for (int index = 0; index < Request.Files.Count; index++)
{
if (!string.IsNullOrEmpty(Request.Files[index].FileName))
{
Request.Files[index].SaveAs(Path.Combine(Server.MapPath("Files"), System.IO.Path.GetFileName(Request.Files[index].FileName)));
}
}
}
}
效果图如下:
页面代码MutlileFileUpload.aspx如下:
[html] view
plaincopy
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MutlileFileUpload.aspx.cs"
Inherits="MutlileFileUpload" %>
<!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>
<title>多文件上传到服务器Demo</title>
<link href="css/writemail.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
<!--
var MAXFILES = 5; //文件计数器
var fileCount = 0;
function addAttach(noAlert) {
if (fileCount >= MAXFILES && !noAlert) { alert("最多只能添加" + MAXFILES + "个附件!"); return; }
var fileSectionDiv = document.getElementById("files");
var fileItemDiv = document.createElement("div");
fileCount++;
var content = "<input type='file' onchange='return addAttach(true);' name='fileUpload'" + fileCount + "> <a href='#' onclick='return delAttach(\"" + fileCount + "\")' class='delete_attach' >移除附件</a>";
fileItemDiv.id = "fileItemDiv" + fileCount;
fileItemDiv.innerHTML = content;
fileSectionDiv.appendChild(fileItemDiv);
return false;
}
function delAttach(fileIndex) {
var fileSectionDiv = document.getElementById("files");
var fileItemDiv = document.getElementById("fileItemDiv" + fileIndex);
fileSectionDiv.removeChild(fileItemDiv);
fileCount--;
return false;
} //
--></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a id="addAttach_a" onclick="return addAttach(false);" href="#" class="add_attach">添加附件</a>
<div id="files">
</div>
<asp:Button ID="btnSend" runat="server" Text="发送" OnClick="btnSend_Click" />
</div>
</form>
</body>
</html>
样式表WriteMail.css代码如下:
[css] view
plaincopy
.delete_attach {PADDING-LEFT: 18px; BACKGROUND: url(../images/deleteattch_icon.gif) no-repeat left top; MARGIN-LEFT: 7px; WIDTH: 90px; COLOR: #002f76}.add_attach {PADDING-LEFT: 22px; BACKGROUND: url(../images/attach.gif) no-repeat left center; WIDTH: 90px; COLOR: #002f76}
后台代码MutlileFileUpload.aspx.cs如下:
[csharp] view
plaincopy
using System;
using System.IO;
using System.Web.UI;
public partial class MutlileFileUpload : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{ //告诉表单如何格式化文件信息
Page.Form.Enctype = "multipart/form-data";
}
protected void btnSend_Click(object sender, EventArgs e)
{
for (int index = 0; index < Request.Files.Count; index++)
{
if (!string.IsNullOrEmpty(Request.Files[index].FileName))
{
Request.Files[index].SaveAs(Path.Combine(Server.MapPath("Files"), System.IO.Path.GetFileName(Request.Files[index].FileName)));
}
}
}
}
相关文章推荐
- 使用WinInet向 ASP.Net Web服务器 多线程上传文件
- 使用ASP.NET上传多个文件到服务器
- 不使用ASP.NET中的服务器控件将如何上传文件?
- 使用ASP.NET上传多个文件到服务器
- asp.net不使用服务器控件上传文件时的无意问题
- 不使用ASP.NET中的服务器控件将如何上传文件?
- 使用ASP.NET上传多个文件到服务器(一)
- ASP.Net文件上传研究开篇之—— 不使用服务器控件的文件上传
- asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 也谈使用ASP.NET上传Word文件至服务器,并转成HTML。
- asp.net使用FtpWebRequest向ftp上传文件报错 基础连接已经关闭: 服务器提交了协议冲突
- 使用WinInet向 ASP.Net Web服务器 多线程上传文件
- 使用ASP.NET上传多个文件到服务器
- asp.net slickupload 使用方法(文件上传)
- JQuery文件上传插件ajaxFileUpload在Asp.net MVC中的使用
- JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
- ASP.NET文件上传控件Uploadify的使用方法
- Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件
- ASP.NET 使用js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)