C# 通用文件上传类

时间:2022-09-14 11:55:53

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