一个保存文件到文件系统的经典实例
<%@ Page Language="C#" %><%@ Import Namespace=" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
<script runat="server">
触发Click事件将FileUpload控件中选中的文件保存到指定路径下的目录中
protected void btnAdd_Click(object sender, EventArgs e)
{
if (upImage.HasFile)
{
if (CheckFileType(upImage.FileName))
{
String filePath = "~/UploadImages/" + upImage.FileName;
upImage.SaveAs(MapPath(filePath));
}
}
}
检查文件的扩展名,确保为图片类型
bool CheckFileType(string fileName)
{
string ext = Path.GetExtension(fileName);
switch (ext.ToLower())
{
case ".gif":
return true;
case ".png":
return true;
case ".jpg":
return true;
case ".jpeg":
return true;
default:
return false;
}
}
Page PreRender会自动处理,因为页面支持已默认启动的AutoEventWireUp特性
void Page_PreRender()
{
获取以UploadImages结尾的路径名,以字符串形式保存在upFolder中
string upFolder = MapPath("~/UploadImages/");
将路径名传递给DirectoryInfo类以产生一个目录实例
DirectoryInfo dir = new DirectoryInfo(upFolder);
获取目录下的所有文件作为DataList的数据源
dlstImages.DataSource = dir.GetFiles();
绑定数据源,将其显示在同类型的控件中
dlstImages.DataBind();
}
</script>
<html xmlns="http://www. >
<head id="Head1" runat="server">
<title>FileUpload File</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label
id="lblImageFile"
Text="Image File:"
AssociatedControlID="upImage"
Runat="server" />
<asp:FileUpload
id="upImage"
Runat="server" />
<br /><br />
<asp:Button
id="btnAdd"
Text="Add Image"
OnClick="btnAdd_Click"
Runat="server" />
<hr />
<asp:DataList
id="dlstImages"
RepeatColumns="3"
runat="server">
为DataList设置模板
<ItemTemplate>
将Image添加进容器
<asp:Image ID="Image1"
在 <%# 和 %> 字符之间包含数据绑定表达式,使用TemplateControl.Eval()方法指定表达式应满足的字符串格式,即与ImageUrl相关的路径字符串是”其他/UploadImages/图片名”
ImageUrl='<%# Eval("Name", "~/UploadImages/{0}") %>'
style="width:200px"
Runat="server" />
<br />
将图片与其Name值绑定起来,即隔一行显示文件名
<%# Eval("Name") %>
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>
此代码源自微软技术大师力作《揭秘(卷1)》。大师的编写代码的功力深不可测,本人根据自己的理解略述浅见,拿来与大家分享、交流。如感兴趣,可在VS环境下调试运行,切记,要创建一个名为UploadImages的文件夹!