C#实现通用上传文件完整示例

前台页面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

  1. using System; 
  2. using System.Data; 
  3. using System.Configuration; 
  4. using System.Collections; 
  5. using System.Web; 
  6. using System.Web.Security; 
  7. using System.Web.UI; 
  8. using System.Web.UI.WebControls; 
  9. using System.Web.UI.WebControls.WebParts; 
  10. using System.Web.UI.HtmlControls; 
  11.  
  12. public partial class Inc_Upfile : System.Web.UI.Page 
  13. protected void Page_Load(object sender, EventArgs e) 
  14. //Cut By 梦溪苑。 
  15. protected void Button1_Click(object sender, EventArgs e) 
  16. AllSheng.upload UpFiles = new AllSheng.upload(); 
  17.  
  18.  
  19. //HttpPostedFile File = FileUpload1.PostedFile; 
  20. // AllSheng.UploadObj.PhotoSave("/", FileUpload1); 
  21. HttpFileCollection files = HttpContext.Current.Request.Files; 
  22. UpFiles.Path = "../UpLoadfiles"
  23. String ReStr= UpFiles.SaveAs(files).ToString(); 
  24. Label1.Text = ReStr; 
  25. UpFiles = null

 

通用类文件代码

  1. using System; 
  2.  using System.Data; 
  3.  using System.Configuration; 
  4.  using System.Web; 
  5.  using System.Web.UI; 
  6.  using System.Web.UI.WebControls; 
  7.  using System.Web.UI.WebControls.WebParts; 
  8.  using System.Web.UI.HtmlControls; 
  9.   
  10.  /**//// <summary> 
  11.  /// Cls_Upfile 的摘要说明 
  12.  /// </summary> 
  13.  /// 
  14.  namespace AllSheng 
  15.  ...{ 
  16.  public class upload 
  17.  ...{ 
  18.  变量#region 变量 
  19.   
  20.  System.Web.HttpPostedFile postedFile; 
  21.   
  22.  protected string localFileName;//原文件名(含扩展名) 
  23.  protected string localFileExtension;//原扩展名 
  24.  protected long localFileLength;//原文件大小 
  25.  protected string localFilePath;//原文件路径 
  26.   
  27.  protected string saveFileName;//保存的文件名(含扩展名) 
  28.  protected string saveFileExtension;//保存的扩展名 
  29.  //protected long saveFileLength;//保存的文件大小 
  30.  protected string saveFilePath;//保存文件的服务器端的完整路径 
  31.  protected string saveFileFolderPath;//保存文件的服务器端的文件夹路径 
  32.   
  33.   
  34.  private string path = null
  35.  private string fileType = null
  36.  private int sizes = 0; 
  37.   
  38.  #endregion 
  39.   
  40.  upload():初始化变量#region upload():初始化变量 
  41.  /**//// <summary> 
  42.  /// 初始化变量 
  43.  /// </summary> 
  44.  public upload() 
  45.  ...{ 
  46.  path = @"uploadimages"//上传路径 
  47.  fileType = "jpg|gif|bmp|jpeg|png|rar|doc"
  48.  sizes = 200; //传文件的大小,默认200KB 
  49.  } 
  50.  #endregion 
  51.   
  52.  设置传入的值:Path/Sizes/FileType#region 设置传入的值:Path/Sizes/FileType 
  53.  /**//// <summary> 
  54.  /// 设置上传路径,如:uploadimages 
  55.  /// </summary> 
  56.  public string Path 
  57.  ...{ 
  58.  set 
  59.  ...{ 
  60.  path = @"" + value + @""
  61.  } 
  62.  } 
  63.   
  64.  /**//// <summary> 
  65.  /// 设置上传文件大小,单位为KB 
  66.  /// </summary> 
  67.  public int Sizes 
  68.  ...{ 
  69.  set 
  70.  ...{ 
  71.  sizes = value; 
  72.  } 
  73.  } 
  74.   
  75.  /**//// <summary> 
  76.  /// 设置上传文件的类型,如:jpg|gif|bmp 
  77.  /// </summary> 
  78.  public string FileType 
  79.  ...{ 
  80.  set 
  81.  ...{ 
  82.  fileType = value; 
  83.  } 
  84.  } 
  85.  #endregion 
  86.   
  87.  SaveAs()上传文件#region SaveAs()上传文件 
  88.   
  89.  public string SaveAs(System.Web.HttpFileCollection files) 
  90.  ...{ 
  91.  string myReturn = ""
  92.  try 
  93.  ...{ 
  94.  for (int iFile = 0; iFile < files.Count; iFile++) 
  95.  ...{ 
  96.  postedFile = files[iFile]; 
  97.  //获得文件的上传的路径 
  98.  localFilePath = postedFile.FileName; 
  99.  //判断上传文件路径是否为空 
  100.  if (localFilePath == null || localFilePath == ""
  101.  ...{ 
  102.  //message("您没有上传数据呀,是不是搞错了呀!"); 
  103.  //break; 
  104.   
  105.  continue
  106.  } 
  107.  else 
  108.  ...{ 
  109.  判断文件大小#region 判断文件大小 
  110.  //获得上传文件的大小 
  111.  localFileLength = postedFile.ContentLength; 
  112.  //判断上传文件大小 
  113.  if (localFileLength >= sizes * 1024) 
  114.  ...{ 
  115.  message("上传的图片不能大于" + sizes + "KB"); 
  116.  break
  117.  } 
  118.  #endregion 
  119.   
  120.  文件夹#region 文件夹 
  121.  //获取保存文件夹路径 
  122.  saveFileFolderPath = getSaveFileFolderPath(path); 
  123.  #endregion 
  124.   
  125.  文件名#region 文件名 
  126.  //获得原文件名(含扩展名) 
  127.  localFileName = System.IO.Path.GetFileName(postedFile.FileName); 
  128.   
  129.  saveFileName = DateTime.UtcNow.ToString("yyyy" + "MM" + "dd" + "HH" + "mm" + "ss" + "ffffff");//"yyyy"+"MM"+"dd"+"HH"+"mm"+"ss"+"ffffff" 
  130.  #endregion 
  131.   
  132.  扩展名#region 扩展名 
  133.  //获取原文件扩展名 
  134.  localFileExtension = getFileExtension(localFileName); 
  135.   
  136.  //如果为真允许上传,为假则不允许上传 
  137.  if (localFileExtension == ""
  138.  ...{ 
  139.  message("目前本系统支持的格式为:" + fileType); 
  140.  } 
  141.  //得到保存文件的扩展名,可根据需要更改扩展名 
  142.  saveFileExtension = localFileExtension; 
  143.  #endregion 
  144.   
  145.  //得到保存文件的完整路径 
  146.  saveFilePath = saveFileFolderPath + saveFileName + saveFileExtension; 
  147.  postedFile.SaveAs(saveFilePath); 
  148.  myReturn = myReturn + ((myReturn == "" || myReturn == null) ? "" : "|") + path.TrimStart(new char[] ...{ '' }) + saveFileName + saveFileExtension; 
  149.  //以下对文章的内容进行一些加工 
  150.   
  151.  System.Web.HttpContext.Current.Response.Write("<script>parent.Article_Content___Frame.FCK.EditorDocument.body.innerHTML+='<img src=" + saveFileName + saveFileExtension + " "+" border=0 />'</SCRIPT>"); 
  152.   
  153.  } 
  154.  } 
  155.  } 
  156.  catch 
  157.  ...{ 
  158.  //异常 
  159.  message("出现未知错误!"); 
  160.  myReturn = null
  161.  } 
  162.  return myReturn; 
  163.  } 
  164.  #endregion 
  165.   
  166.  getSaveFileFolderPath(...):获得保存的文件夹的物理路径#region getSaveFileFolderPath(...):获得保存的文件夹的物理路径 
  167.  /**//// <summary> 
  168.  /// 获得保存的文件夹的物理路径 
  169.  /// 返回保存的文件夹的物理路径,若为null则表示出错 
  170.  /// </summary> 
  171.  /// <param name="format">保存的文件夹路径 或者 格式化方式创建保存文件的文件夹,如按日期"yyyy"+"MM"+"dd":20060511</param> 
  172.  /// <returns>保存的文件夹的物理路径,若为null则表示出错</returns> 
  173.  private string getSaveFileFolderPath(string format) 
  174.  ...{ 
  175.  string mySaveFolder = null
  176.  try 
  177.  ...{ 
  178.  string folderPath = null
  179.  //以当前时间创建文件夹, 
  180.  //!!!!!!!!!!!!以后用正则表达式替换下面的验证语句!!!!!!!!!!!!!!!!!!! 
  181.  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) 
  182.  ...{ 
  183.  //以通用标准时间创建文件夹的名字 
  184.  folderPath = DateTime.UtcNow.ToString(format); 
  185.  mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + @"" + folderPath + @""
  186.  } 
  187.  else 
  188.  ...{ 
  189.  mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + format; 
  190.  } 
  191.  System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(mySaveFolder); 
  192.  //判断文件夹否存在,不存在则创建 
  193.  if (!dir.Exists) 
  194.  ...{ 
  195.  dir.Create(); 
  196.  } 
  197.  } 
  198.  catch 
  199.  ...{ 
  200.  message("获取保存路径出错"); 
  201.  } 
  202.  return mySaveFolder; 
  203.  } 
  204.   
  205.  #endregion 
  206.   
  207.  getFileExtension(...):获取原文件的扩展名#region getFileExtension(...):获取原文件的扩展名 
  208.  /**//// <summary> 
  209.  /// 获取原文件的扩展名,返回原文件的扩展名(localFileExtension),该函数用到外部变量fileType,即允许的文件扩展名. 
  210.  /// </summary> 
  211.  /// <param name="myFileName">原文件名</param> 
  212.  /// <returns>原文件的扩展名(localFileExtension);若返回为null,表明文件无后缀名;若返回为"",则表明扩展名为非法.</returns> 
  213.  private string getFileExtension(string myFileName) 
  214.  ...{ 
  215.  string myFileExtension = null
  216.  //获得文件扩展名 
  217.  myFileExtension = System.IO.Path.GetExtension(myFileName);//若为null,表明文件无后缀名; 
  218.  //分解允许上传文件的格式 
  219.  if (myFileExtension != ""
  220.  ...{myFileExtension = myFileExtension.ToLower();//转化为小写 
  221.  } 
  222.  string[] temp = fileType.Split('|'); 
  223.  //设置上传的文件是否是允许的格式 
  224.  bool flag = false
  225.  //判断上传的文件是否是允许的格式 
  226.  foreach (string data in temp) 
  227.  ...{ 
  228.  if (("." + data) == myFileExtension) 
  229.  ...{ 
  230.  flag = true
  231.  break
  232.  } 
  233.  } 
  234.  if (!flag) 
  235.  ...{ 
  236.  myFileExtension = "";//不能设置成null,因为null表明文件无后缀名; 
  237.  } 
  238.  return myFileExtension; 
  239.  } 
  240.  #endregion 
  241.   
  242.  message(...):弹出消息框#region message(...):弹出消息框 
  243.  /**//// <summary> 
  244.  /// 弹出消息框,显示内容(msg),点击"确定"后页面跳转到该路径(url) 
  245.  /// </summary> 
  246.  /// <param name="msg">显示内容</param> 
  247.  /// <param name="url">跳转路径</param> 
  248.  private void message(string msg, string url) 
  249.  ...{ 
  250.  System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');window.location='" + url + "'</script>"); 
  251.  } 
  252.   
  253.  /**//// <summary> 
  254.  /// 弹出消息框,显示内容(msg),无跳转 
  255.  /// </summary> 
  256.  /// <param name="msg">显示内容</param> 
  257.  private void message(string msg) 
  258.  ...{ 
  259.  System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');</script>"); 
  260.  } 
  261.  #endregion 
  262.  } 
  263.  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值