C# 通用上传文件类

1、Upfile.aspx:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upfile.aspx.cs" Inherits="Inc_Upfile" %>
  2.  
  3.  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
  4.  
  5.  <html xmlns="http://www.w3.org/1999/xhtml"; >
  6.  <head runat="server">
  7.  <title>上传文件</title>
  8.  <link href="../Manage/Style.Css" type="text/css" rel=Stylesheet />
  9.  </head>
  10.  <body>
  11.  <form id="form1" runat="server">
  12.  <div style="left: 0px; clip: rect(0px auto auto 0px); position: absolute; top: 0px">
  13.  <asp:FileUpload ID="FileUpload1" runat="server" />
  14.  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传文件" CssClass="btn2" />
  15.  <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
  16.  </form>
  17.  </body>
  18.  </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
 }
 }

posted @ 2009-12-31 22:48  与时俱进  阅读(1035)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈