首页  >  文章  >  后端开发  >  在ASP.NET中上传下载文件实例代码

在ASP.NET中上传下载文件实例代码

怪我咯
怪我咯原创
2017-03-30 11:53:491834浏览

using System.IO;
//检查上传文件不为空

 if(File1.PostedFile!=null)
   {     
    string nam = File1.PostedFile.FileName ;
    //取得文件名(抱括路径)里最后一个"."的索引
    int i= nam.LastIndexOf(".");
    //取得文件扩展名
    string newext =nam.Substring(i);
    //这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复
    DateTime now = DateTime.Now; 
    string newname=now.DayOfYear.ToString()+File1.PostedFile.ContentLength.ToString(); 
    //保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.
    //注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里""必须用""代替
    File1.PostedFile.SaveAs(Server.MapPath("upload"+newname+newext));    this.HyperLink1.NavigateUrl  ="upload"+newname+newext;    //得到这个文件的相关属性:文件名,文件类型,文件大小
    //fname.Text=File1.PostedFile.FileName;
    //fenc.Text=File1.PostedFile.ContentType ;
    //fsize.Text=File1.PostedFile.ContentLength.ToString();
   }

上传可以用.net里的HTML控件里的File Field的上传控件呀,你拖到窗体上后,你可以右击做为服务器端控件使用,就这样写上你要上传的几句代码就行了,下载直接连接到你要下载的文件就可以下载了把文件上传放到服务器上,直接加超衔接就是下载了.一下是上传文件用到的类: 
说明:直接在cs文件里复制粘贴就可以用的.using System; 
using System.IO; 

using System.Web.UI.HtmlControls;namespace youjian 
{ 
 /// <summary> 
 /// UpFile 的摘要说明。 
 /// </summary> 
 public class UpFile 
 { 
  public UpFile() 
 { 
}#region 是否允许该扩展名上传IsAllowedExtension 
///<summary> 
///是否允许该扩展名上传 
///</summary> 
///<paramname = "hifile">HtmlInputFile控件</param> 
///<returns>允许则返回true,否则返回false</returns> 
public bool IsAllowedExtension(HtmlInputFile hifile) 
{ 
 string strOldFilePath = ""; 
 string strExtension = ""; //允许上传的扩展名,可以改成从配置文件中读出 
 string[]arrExtension = {".gif",".jpg",".jpeg",".bmp",".png"}; if(hifile.PostedFile.FileName != string.Empty) 
 { 
 strOldFilePath = hifile.PostedFile.FileName; 
 //取得上传文件的扩展名 
 strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf(".")); 
 //判断该扩展名是否合法 
  for(int i = 0;i<arrExtension.Length;i++) 
  { 
   if(strExtension.Equals(arrExtension[i])) 
   { 
    return true; 
   } 
  } 
 } 
 return false; 
} 
#endregion #region 判断上传文件大小是否超过最大值IsAllowedLength 
/// <summary> 
/// 判断上传文件大小是否超过最大值 
/// </summary> 
/// <param name="hifile">HtmlInputFile控件</param> 
/// <returns>超过最大值返回false,否则返回true.</returns> 
public bool IsAllowedLength(HtmlInputFile hifile) 
{ 
 //允许上传文件大小的最大值,可以保存在xml文件中,单位为KB 
 int i = 20; 
 //如果上传文件的大小超过最大值,返回flase,否则返回true. 
 if(hifile.PostedFile.ContentLength > i * 1024) 
 { 
  return false; 
 } 
 return true; 
} 
#endregion
#region 获取一个不重复的文件名GetUniqueString 
/// <summary> 
/// 获取一个不重复的文件名 
/// </summary> 
/// <returns></returns> 
public string GetUniqueString() 
{ 
 //得到的文件名形如:20050922101010 
 return DateTime.Now.ToString("yyyyMMddhhmmss"); 
} 
#endregion #region 删除指定文件DeleteFile 
/// <summary> 
/// 删除指定文件 
/// </summary> 
/// <param name="strAbsolutePath">文件绝对路径</param> 
/// <param name="strFileName">文件名</param> 
public void DeleteFile(string strAbsolutePath, string strFileName) 
{ 
//判断路径最后有没有/符号,没有则自动加上 
 if(strAbsolutePath.LastIndexOf("//") == strAbsolutePath.Length) 
 { 
  //判断要删除的文件是否存在 
  if(File.Exists(strAbsolutePath + strFileName)) 
  { 
   //删除文件 
   File.Delete(strAbsolutePath + strFileName); 
  } 
 } 
 else 
 { 
  if(File.Exists(strAbsolutePath + "//" + strFileName)) 
  { 
   File.Delete(strAbsolutePath + "//" + strFileName); 
  } 
 } 
} 
#endregion
#region 上传文件并返回文件名 SaveFile 
/// <summary> 
/// 上传文件并返回文件名 
/// </summary> 
/// <param name="hifile">HtmlInputFile控件</param> 
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用/符号亦可</param> 
/// <returns>返回的文件名即上传后的文件名</returns> 
public string SaveFile(HtmlInputFile hifile,string strAbsolutePath) 
{ 
 string strOldFilePath = "",strExtension = "",strNewFileName = ""; //如果上传文件的文件名不为空 
 if(hifile.PostedFile.FileName != string.Empty) 
 { 
  strOldFilePath = hifile.PostedFile.FileName; 
  //取得上传文件的扩展名 
  strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf(".")); 
  //文件上传后的命名 
  strNewFileName = GetUniqueString() + strExtension; 
  //如果路径末尾为/符号,则直接上传文件 
  if(strAbsolutePath.LastIndexOf("//") == strAbsolutePath.Length) 
  { 
   hifile.PostedFile.SaveAs(strAbsolutePath + strNewFileName); 
  } 
  else 
  { 
   hifile.PostedFile.SaveAs(strAbsolutePath + "//" + strNewFileName); 
  } 
 } 
 return strNewFileName; 
} 
#endregion 
#region 重新上传文件,删除原有文件CoverFile 
/// <summary> 
/// 重新上传文件,删除原有文件 
/// </summary> 
/// <param name="ffFile">HtmlInputFile控件</param> 
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用/符号亦可</param> 
/// <param name="strOldFileName">旧文件名</param> 
public void CoverFile(HtmlInputFile ffFile,string strAbsolutePath,string strOldFileName) 
{ 
 //获得新文件名 
 string strNewFileName = GetUniqueString(); if(ffFile.PostedFile.FileName != string.Empty) 
 { 
 //旧图片不为空时先删除旧图片 
  if(strOldFileName != string.Empty) 
  { 
   DeleteFile(strAbsolutePath,strOldFileName); 
  } 
  SaveFile(ffFile,strAbsolutePath); 
 } 
} 
#endregion

C#.net 文件操作:上传 下载 删除 文件列表

  1.文件上传 
---------- 
如下要点: 
HTML部分: 

<form id="form1" runat="server" method="post" enctype="multipart/form-data"> 
<input id="FileUpLoad" type="file" runat="server"/><br /> 
后台CS部分 按钮事件 
//string strFileFullName = System.IO.Path.GetFileName(this.FileUpLoad.PostedFile.FileName); 
//this.FileUpLoad.PostedFile.SaveAs(Server.MapPath("./xmlzip/") + strFileFullName);

2.文件下载 
---------- 

ListBox的SelectedIndexChanged事件 设定相关下载连接 
protected void lst_DownLoadFileList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
 try 
 { 
  string strJS = "window.open(&#39;xmlzip/"; 
  strJS += this.lst_DownLoadFileList.SelectedItem.Text.Trim(); 
  strJS += "&#39;); return false; "; 
  this.imgbtn_DownLoadFile.Attributes.Add("onclick", strJS); 
 } 
 catch (Exception ex) 
 { 
  ex.ToString(); 
 } 
}

或者也可以通过 改变Label的Text值 来实现点击后实现文件下载的超级连接 

this.Label1.Text = "<a href=/"xmlzip/a.rar/">a.rar</a>"

3.文件删除 
--------- 

string strFilePath = Server.MapPath("../CountryFlowMgr/xmlzip/"+this.lst_DownLoadFileList.SelectedItem.Text.Trim()); 
if (File.Exists(strFilePath)) 
{ 
 File.Delete(strFilePath); 
 if (File.Exists(strFilePath)) 
 { 
  Response.Write("ok"); 
 } 
 else 
 { 
  Response.Write("ok"); 
 } 
}

4.得到文件夹下的文件列表 
----------- 
#region 得到当前可用的文件列表 
/// 631fb227578dfffda61e1fa4d04b7d25 
/// 得到当前可用的文件列表 
/// 039f3e95db2a684c7b74365531eb6044 
/// 9fad65a959e2f62c5d42ab257affb19b是否需要弹出提示信息8bb7487ae6a16a43571bc14c7fcf93c2 

private void fn_getCurrFileList(bool IsAlert) 
{ 
 try 
 { 
  //查找xmlzip文件夹下 属于其本身UnitCoding的相关zip文件 
  string strXmlZipDirectory = Server.MapPath("../xmlzip/"); 
  if (Directory.Exists(strXmlZipDirectory)) 
  { 
   //DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory); 
   DirectoryInfo di = new DirectoryInfo(strXmlZipDirectory);   FileInfo[] FI = di.GetFiles("*.zip");//只查.zip文件 
   if (FI.Length > 0) 
   { 
    lst_DownLoadFileList.Items.Clear(); 
    foreach (FileInfo tmpFI in FI) 
    { 
     ListItem tmpItem = new ListItem(); 
     tmpItem.Text = tmpFI.Name; 
     lst_DownLoadFileList.Items.Add(tmpItem); 
    } 
    lst_DownLoadFileList.SelectedIndex = 0; 
   } 
   else 
   { 
    if (IsAlert) 
    { 
     Response.write("查无可以下载的文件!"); 
    } 
   } 
  }  
 } 
 catch (Exception ex) 
 { 
  ex.ToString(); 
 } 
} 
#endregion

以上是在ASP.NET中上传下载文件实例代码的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn