当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C# 通用文件上传类

ASP.NET
asp.net Server.MapPath方法注意事项
asp.net下常用的加密算法MD5、SHA-1应用代码
几个 ASP.NET 小技巧
ASP.NET内置对象之Application对象
ASP.NET使用正则表达式屏蔽垃圾信息
asp.net“服务器应用程序不可用” 解决方法
asp.net Linq把数据导出到Excel的代码
asp.net ext treepanel 动态加载XML的实现方法
silverlight2.0Beta版TextBox输入中文解决方法
asp.net转出json格式客户端显示时间
asp.net下Linq To Sql注意事项小结
ASP.NET动态加载用户控件的实现方法
asp.net web大文件上传带进度条实例代码
asp.net DZ论坛中根据IP地址取得所在地的代码
向asp.Net进发 数据库连接操作
.net 上传文件前所未有的简单
asp.net gridview代码绑定
asp.net中List的使用方法
Asp.net(C#)实现验证码功能代码
asp.NET开发中正则表达式中BUG分析

ASP.NET 中的 C# 通用文件上传类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 279 ::
收藏到网摘: n/a

C# 通用上传文件类,需要的朋友可以参考下。 1、Upfile.aspx:
复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upfile.aspx.cs" Inherits="Inc_Upfile" %>
<!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>
<link href="../Manage/Style.Css" type="text/css" rel=Stylesheet />
</head>
<body>
<form id="form1" runat="server">
<div style="left: 0px; clip: rect(0px auto auto 0px); position: absolute; top: 0px">
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传文件" CssClass="btn2" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
</form>
</body>
</html>

Upfile.aspx.cs
代码
复制代码 代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Inc_Upfile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Cut By 梦溪苑。
}
protected void Button1_Click(object sender, EventArgs e)
{
AllSheng.upload UpFiles = new AllSheng.upload();
//HttpPostedFile File = FileUpload1.PostedFile;
// AllSheng.UploadObj.PhotoSave("/", FileUpload1);
HttpFileCollection files = HttpContext.Current.Request.Files;
UpFiles.Path = "../UpLoadfiles";
String ReStr= UpFiles.SaveAs(files).ToString();
Label1.Text = ReStr;
UpFiles = null;
}
}

3、类文件:
代码
复制代码 代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/**//// <summary>
/// Cls_Upfile 的摘要说明
/// </summary>
///
namespace AllSheng
{
public class upload
{
变量#region 变量
System.Web.HttpPostedFile postedFile;
protected string localFileName;//原文件名(含扩展名)
protected string localFileExtension;//原扩展名
protected long localFileLength;//原文件大小
protected string localFilePath;//原文件路径
protected string saveFileName;//保存的文件名(含扩展名)
protected string saveFileExtension;//保存的扩展名
//protected long saveFileLength;//保存的文件大小
protected string saveFilePath;//保存文件的服务器端的完整路径
protected string saveFileFolderPath;//保存文件的服务器端的文件夹路径
private string path = null;
private string fileType = null;
private int sizes = 0;
#endregion
upload():初始化变量#region upload():初始化变量
/**//// <summary>
/// 初始化变量
/// </summary>
public upload()
{
path = @"uploadimages"; //上传路径
fileType = "jpg|gif|bmp|jpeg|png|rar|doc";
sizes = 200; //传文件的大小,默认200KB
}
#endregion
设置传入的值:Path/Sizes/FileType#region 设置传入的值:Path/Sizes/FileType
/**//// <summary>
/// 设置上传路径,如:uploadimages
/// </summary>
public string Path
{
set
{
path = @"" + value + @"";
}
}
/**//// <summary>
/// 设置上传文件大小,单位为KB
/// </summary>
public int Sizes
{
set
{
sizes = value;
}
}
/**//// <summary>
/// 设置上传文件的类型,如:jpg|gif|bmp
/// </summary>
public string FileType
{
set
{
fileType = value;
}
}
#endregion
SaveAs()上传文件#region SaveAs()上传文件
public string SaveAs(System.Web.HttpFileCollection files)
{
string myReturn = "";
try
{
for (int iFile = 0; iFile < files.Count; iFile++)
{
postedFile = files[iFile];
//获得文件的上传的路径
localFilePath = postedFile.FileName;
//判断上传文件路径是否为空
if (localFilePath == null || localFilePath == "")
{
//message("您没有上传数据呀,是不是搞错了呀!");
//break;
continue;
}
else
{
判断文件大小#region 判断文件大小
//获得上传文件的大小
localFileLength = postedFile.ContentLength;
//判断上传文件大小
if (localFileLength >= sizes * 1024)
{
message("上传的图片不能大于" + sizes + "KB");
break;
}
#endregion
文件夹#region 文件夹
//获取保存文件夹路径
saveFileFolderPath = getSaveFileFolderPath(path);
#endregion
文件名#region 文件名
//获得原文件名(含扩展名)
localFileName = System.IO.Path.GetFileName(postedFile.FileName);
saveFileName = DateTime.UtcNow.ToString("yyyy" + "MM" + "dd" + "HH" + "mm" + "ss" + "ffffff");//"yyyy"+"MM"+"dd"+"HH"+"mm"+"ss"+"ffffff"
#endregion
扩展名#region 扩展名
//获取原文件扩展名
localFileExtension = getFileExtension(localFileName);
//如果为真允许上传,为假则不允许上传
if (localFileExtension == "")
{
message("目前本系统支持的格式为:" + fileType);
}
//得到保存文件的扩展名,可根据需要更改扩展名
saveFileExtension = localFileExtension;
#endregion
//得到保存文件的完整路径
saveFilePath = saveFileFolderPath + saveFileName + saveFileExtension;
postedFile.SaveAs(saveFilePath);
myReturn = myReturn + ((myReturn == "" || myReturn == null) ? "" : "|") + path.TrimStart(new char[] { '' }) + saveFileName + saveFileExtension;
//以下对文章的内容进行一些加工
System.Web.HttpContext.Current.Response.Write("<script>parent.Article_Content___Frame.FCK.EditorDocument.body.innerHTML+='<img src=" + saveFileName + saveFileExtension + " "+" border=0 />'</SCRIPT>");
}
}
}
catch
{
//异常
message("出现未知错误!");
myReturn = null;
}
return myReturn;
}
#endregion
getSaveFileFolderPath( ):获得保存的文件夹的物理路径#region getSaveFileFolderPath( ):获得保存的文件夹的物理路径
/**//// <summary>
/// 获得保存的文件夹的物理路径
/// 返回保存的文件夹的物理路径,若为null则表示出错
/// </summary>
/// <param name="format">保存的文件夹路径 或者 格式化方式创建保存文件的文件夹,如按日期"yyyy"+"MM"+"dd":20060511</param>
/// <returns>保存的文件夹的物理路径,若为null则表示出错</returns>
private string getSaveFileFolderPath(string format)
{
string mySaveFolder = null;
try
{
string folderPath = null;
//以当前时间创建文件夹,
//!!!!!!!!!!!!以后用正则表达式替换下面的验证语句!!!!!!!!!!!!!!!!!!!
if (format.IndexOf("yyyy") > -1 || format.IndexOf("MM") > -1 || format.IndexOf("dd") > -1 || format.IndexOf("hh") > -1 || format.IndexOf("mm") > -1 || format.IndexOf("ss") > -1 || format.IndexOf("ff") > -1)
{
//以通用标准时间创建文件夹的名字
folderPath = DateTime.UtcNow.ToString(format);
mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + @"" + folderPath + @"";
}
else
{
mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + format;
}
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(mySaveFolder);
//判断文件夹否存在,不存在则创建
if (!dir.Exists)
{
dir.Create();
}
}
catch
{
message("获取保存路径出错");
}
return mySaveFolder;
}
#endregion
getFileExtension( ):获取原文件的扩展名#region getFileExtension( ):获取原文件的扩展名
/**//// <summary>
/// 获取原文件的扩展名,返回原文件的扩展名(localFileExtension),该函数用到外部变量fileType,即允许的文件扩展名.
/// </summary>
/// <param name="myFileName">原文件名</param>
/// <returns>原文件的扩展名(localFileExtension);若返回为null,表明文件无后缀名;若返回为"",则表明扩展名为非法.</returns>
private string getFileExtension(string myFileName)
{
string myFileExtension = null;
//获得文件扩展名
myFileExtension = System.IO.Path.GetExtension(myFileName);//若为null,表明文件无后缀名;
//分解允许上传文件的格式
if (myFileExtension != "")
{myFileExtension = myFileExtension.ToLower();//转化为小写
}
string[] temp = fileType.Split('|');
//设置上传的文件是否是允许的格式
bool flag = false;
//判断上传的文件是否是允许的格式
foreach (string data in temp)
{
if (("." + data) == myFileExtension)
{
flag = true;
break;
}
}
if (!flag)
{
myFileExtension = "";//不能设置成null,因为null表明文件无后缀名;
}
return myFileExtension;
}
#endregion
message( ):弹出消息框#region message( ):弹出消息框
/**//// <summary>
/// 弹出消息框,显示内容(msg),点击"确定"后页面跳转到该路径(url)
/// </summary>
/// <param name="msg">显示内容</param>
/// <param name="url">跳转路径</param>
private void message(string msg, string url)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');window.location='" + url + "'</script>");
}
/**//// <summary>
/// 弹出消息框,显示内容(msg),无跳转
/// </summary>
/// <param name="msg">显示内容</param>
private void message(string msg)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');</script>");
}
#endregion
}
}