日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

      歡迎訪問 生活随笔!

      生活随笔

      當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

      编程问答

      asp文件上传和下载

      發布時間:2023/12/18 编程问答 23 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 asp文件上传和下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

      ASP.NET實現上傳文件

      ? ? ? ?前端

      ? ? ? ?界面十分簡單,只是放一個file類型的<input>和一個按鈕,并且為這個按鈕添加點擊事件(btnUpLoad_Click),如下圖:

      ? ? ? ? ? ?

      ? ? ? ?代碼:? ? ?

      ?

      [html]?view plain?copy?

    1. <input?id="UpLoad"?type="file"?runat="server"?/>??
    2. <asp:Button?runat="server"?Text="上傳"?ID="btnUpLoad"?OnClick="btnUpLoad_Click"?/>??
    3. ?

      ?

      ?

      ? ? ? ?后臺

      ? ? ? ?再就是在后臺編寫上傳按鈕點擊事件UpLoad_Click里的代碼,先大體說一下思路:

      ? ? ? ?1、根據file類型的<input>控件獲得將要上傳文件在本機的物理路徑;

      ? ? ? ?2、在這個物理路徑中用截取字符串的方法獲得文件名(第一步中取得的路徑為本機的絕對路徑,在服務器上是無效的,所以這里我們只需要獲取文件名);

      ? ? ? ?3、利用file類型的<input>控件屬性PostedFile的SaveAs()方法將相應文件存儲到服務器中指定的文件夾中。

      ? ? ? ?核心代碼:

      ?

      ?

      ?

      [csharp]?view plain?copy?

    4. protected?void?btnUpLoad_Click(object?sender,?EventArgs?e)??
    5. ????{??
    6. ????????//取出所選文件的本地路徑??
    7. ????????string?fullFileName?=?this.UpLoad.PostedFile.FileName;??
    8. ????????//從路徑中截取出文件名??
    9. ????????string?fileName?=?fullFileName.Substring(fullFileName.LastIndexOf("\\")?+?1);??
    10. ????????//限定上傳文件的格式??
    11. ????????string?type?=?fullFileName.Substring(fullFileName.LastIndexOf(".")?+?1);??
    12. ????????if?(type?==?"doc"?||?type?==?"docx"?||?type?==?"xls"?||?type?==?"xlsx"?||?type?==?"ppt"?||?type?==?"pptx"?||?type?==?"pdf"?||?type?==?"jpg"?||?type?==?"bmp"?||?type?==?"gif"?||?type?==?"png"?||?type?==?"txt"?||?type?==?"zip"?||?type?==?"rar")??
    13. ????????{??
    14. ????????????//將文件保存在服務器中根目錄下的files文件夾中??
    15. ????????????string?saveFileName?=?Server.MapPath("/files")?+?"\\"?+?fileName;??
    16. ????????????UpLoad.PostedFile.SaveAs(saveFileName);??
    17. ????????????Page.ClientScript.RegisterStartupScript(Page.GetType(),?"message",?"<script?language='javascript'?defer>alert('文件上傳成功!');</script>");??
    18. ??
    19. ????????????//向數據庫中存儲相應通知的附件的目錄??
    20. ????????????BLL.news.InsertAnnexBLL?insertAnnex?=?new?BLL.news.InsertAnnexBLL();??
    21. ????????????AnnexEntity?annex=new?AnnexEntity();?????//創建附件的實體??
    22. ????????????annex.AnnexName=fileName;???????????????//附件名??
    23. ????????????annex.AnnexContent=saveFileName;????????//附件的存儲路徑??
    24. ????????????annex.NoticeId?=?noticeId;??????????????//附件所屬“通知”的ID在這里為已知??
    25. ????????????insertAnnex.InsertAnnex(annex);?????????//將實體存入數據庫(其實就是講實體的這些屬性insert到數據庫中的過程,具體BLL層和DAL層的代碼這里不再多說)??
    26. ????????}??
    27. ????????else??
    28. ????????{??
    29. ????????????Page.ClientScript.RegisterStartupScript(Page.GetType(),?"message",?"<script?language='javascript'?defer>alert('請選擇正確的格式');</script>");??
    30. ????????}??
    31. ????}??
    32. ?

      ?

      ?

      ?

      ? ? ? ? ??ASP.NET實現下載文件

      ? ? ? ?上述操作已經可以實現將一個個附件存入數據庫,在數據庫中存儲的情況給大家截了個圖:

      ? ? ? ? ? ??

      ? ? ? ?下面就要把這些附件在頁面上顯示,頁面顯示效果為:

      ? ? ? ??

      ? ? ? ?點擊附件,瀏覽器提示下載:

      ? ? ? ?

      ?

      ? ? ? ?前臺: ? ? ??

      ? ? ? ?按照需求來說,每則發布的通知可以包含若干個附件,所一前臺用了repeter控件來顯示多個附件: ? ?

      ? ? ? ?代碼:

      ?

      [html]?view plain?copy?

    33. <asp:Repeater?ID="rptAnnex"?runat="server">??
    34. ?????<ItemTemplate>??
    35. ?????????<%--為repeter添加序號--%>??
    36. ?????????附件:<%#Container.ItemIndex?+?1?%>?????????
    37. ?????????<asp:LinkButton?ID="lbtnDownLoad"?runat="server"?OnCommand="lbtnDownLoad_Command"?CommandArgument="<%#((Model.AnnexEntity)Container.DataItem).AnnexContent?%>"><%#((Model.AnnexEntity)Container.DataItem).AnnexName?%></asp:LinkButton>??
    38. ?????????<br?/>??
    39. ?????</ItemTemplate>??
    40. ?</asp:Repeater>??
    41. ?

      ?

      ?

      ? ? ? ? ? ?后臺

      ? ? ? ?ASP.NET可以采用多種方式下載文件(詳情可參考《ASP.NET下載文件的幾種方式》),這里采用了流式的下載方式(參考文章《Asp.net下載實例》):? ? ??

      ?

      [csharp]?view plain?copy?

    42. using?System.IO;??
    43. ???protected?void?lbtnDownLoad_Command(object?sender,?CommandEventArgs?e)??
    44. ???????{??
    45. ???????????//?定義文件名????
    46. ???????????string?fileName?=?"";??
    47. ???????????//?獲取文件在服務器的地址????
    48. ???????????string?url?=?e.CommandArgument.ToString();??
    49. ??
    50. ???????????//?判斷傳輸地址是否為空????
    51. ???????????if?(url?==?"")??
    52. ???????????{??
    53. ???????????????//?提示“該文件暫不提供下載”????
    54. ???????????????Page.ClientScript.RegisterStartupScript(Page.GetType(),?"message",?"<script?defer>alert('該文件暫不提供下載!');</script>");??
    55. ???????????????return;??
    56. ???????????}??
    57. ???????????//?判斷獲取的是否為地址,而非文件名????
    58. ???????????if?(url.IndexOf("\\")?>?-1)??
    59. ???????????{??
    60. ???????????????//?獲取文件名????
    61. ???????????????fileName?=?url.Substring(url.LastIndexOf("\\")?+?1);??
    62. ???????????}??
    63. ???????????else??
    64. ???????????{??
    65. ???????????????//?url為文件名時,直接獲取文件名????
    66. ???????????????fileName?=?url;??
    67. ???????????}??
    68. ???????????//?以字符流的方式下載文件????
    69. ???????????FileStream?fileStream?=?new?FileStream(@url,?FileMode.Open);??
    70. ???????????byte[]?bytes?=?new?byte[(int)fileStream.Length];??
    71. ???????????fileStream.Read(bytes,?0,?bytes.Length);??
    72. ???????????fileStream.Close();??
    73. ???????????Response.ContentType?=?"application/octet-stream";??
    74. ??
    75. ???????????//?通知瀏覽器下載???
    76. ???????????Response.AddHeader("Content-Disposition",?"attachment;?filename="?+?fileName);??
    77. ???????????Response.BinaryWrite(bytes);??
    78. ???????????Response.Flush();??
    79. ???????????Response.End();???????
    80. ???????}??
    81. ?

      ?

      ? ? ? ? ??

      ? ? ? ? ?控制上傳文件的大小??? ?

      ? ? ? ?前面的兩個步驟基本上已經可以實現文件的上傳和下載,除了這些,還需要控制上傳文件的大小,默認情況下上傳文件大小限制為4M,這里可以在配置文件web.config中修改,在httpRuntime節點中加入如下屬性即可:? ??

      ?

      [html]?view plain?copy?

    82. <configuration>??
    83. ??<system.web>????
    84. ????<httpRuntime?executionTimeout="300"?maxRequestLength="51200"?useFullyQualifiedRedirectUrl="false"?/>??
    85. ??</system.web>??
    86. </configuration>??
    87. ? ? ? ??executionTimeout 屬性的值是 ASP.NET 關閉前允許發生的上載秒數,maxRequestLength指限制上傳文件的大小,useFullyQualifiedRedirectUrl指示客戶端重定向是否是完全限定的,或者指示是否代之以將相對重定向發送到客戶端。

      ?

      ?

      ?參考:http://blog.csdn.net/huyuyang6688/article/details/40785429

      總結

      以上是生活随笔為你收集整理的asp文件上传和下载的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。