在ASP.NET中上傳下載檔案執行個體代碼

來源:互聯網
上載者:User

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('xmlzip/";   strJS += this.lst_DownLoadFileList.SelectedItem.Text.Trim();   strJS += "'); 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 得到當前可用的檔案清單
/// <summary>
/// 得到當前可用的檔案清單
/// </summary>
/// <param name="IsAlert">是否需要彈出提示資訊</param>

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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.