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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

asp文件上传和下载

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

ASP.NET實現上傳文件

? ? ? ?前端

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

? ? ? ? ? ?

? ? ? ?代碼:? ? ?

?

[html]?view plain?copy?

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

    ?

    ?

    ? ? ? ?后臺

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

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

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

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

    ? ? ? ?核心代碼:

    ?

    ?

    ?

    [csharp]?view plain?copy?

  • protected?void?btnUpLoad_Click(object?sender,?EventArgs?e)??
  • ????{??
  • ????????//取出所選文件的本地路徑??
  • ????????string?fullFileName?=?this.UpLoad.PostedFile.FileName;??
  • ????????//從路徑中截取出文件名??
  • ????????string?fileName?=?fullFileName.Substring(fullFileName.LastIndexOf("\\")?+?1);??
  • ????????//限定上傳文件的格式??
  • ????????string?type?=?fullFileName.Substring(fullFileName.LastIndexOf(".")?+?1);??
  • ????????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")??
  • ????????{??
  • ????????????//將文件保存在服務器中根目錄下的files文件夾中??
  • ????????????string?saveFileName?=?Server.MapPath("/files")?+?"\\"?+?fileName;??
  • ????????????UpLoad.PostedFile.SaveAs(saveFileName);??
  • ????????????Page.ClientScript.RegisterStartupScript(Page.GetType(),?"message",?"<script?language='javascript'?defer>alert('文件上傳成功!');</script>");??
  • ??
  • ????????????//向數據庫中存儲相應通知的附件的目錄??
  • ????????????BLL.news.InsertAnnexBLL?insertAnnex?=?new?BLL.news.InsertAnnexBLL();??
  • ????????????AnnexEntity?annex=new?AnnexEntity();?????//創建附件的實體??
  • ????????????annex.AnnexName=fileName;???????????????//附件名??
  • ????????????annex.AnnexContent=saveFileName;????????//附件的存儲路徑??
  • ????????????annex.NoticeId?=?noticeId;??????????????//附件所屬“通知”的ID在這里為已知??
  • ????????????insertAnnex.InsertAnnex(annex);?????????//將實體存入數據庫(其實就是講實體的這些屬性insert到數據庫中的過程,具體BLL層和DAL層的代碼這里不再多說)??
  • ????????}??
  • ????????else??
  • ????????{??
  • ????????????Page.ClientScript.RegisterStartupScript(Page.GetType(),?"message",?"<script?language='javascript'?defer>alert('請選擇正確的格式');</script>");??
  • ????????}??
  • ????}??
  • ?

    ?

    ?

    ?

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

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

    ? ? ? ? ? ??

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

    ? ? ? ??

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

    ? ? ? ?

    ?

    ? ? ? ?前臺: ? ? ??

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

    ? ? ? ?代碼:

    ?

    [html]?view plain?copy?

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

    ?

    ?

    ? ? ? ? ? ?后臺

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

    ?

    [csharp]?view plain?copy?

  • using?System.IO;??
  • ???protected?void?lbtnDownLoad_Command(object?sender,?CommandEventArgs?e)??
  • ???????{??
  • ???????????//?定義文件名????
  • ???????????string?fileName?=?"";??
  • ???????????//?獲取文件在服務器的地址????
  • ???????????string?url?=?e.CommandArgument.ToString();??
  • ??
  • ???????????//?判斷傳輸地址是否為空????
  • ???????????if?(url?==?"")??
  • ???????????{??
  • ???????????????//?提示“該文件暫不提供下載”????
  • ???????????????Page.ClientScript.RegisterStartupScript(Page.GetType(),?"message",?"<script?defer>alert('該文件暫不提供下載!');</script>");??
  • ???????????????return;??
  • ???????????}??
  • ???????????//?判斷獲取的是否為地址,而非文件名????
  • ???????????if?(url.IndexOf("\\")?>?-1)??
  • ???????????{??
  • ???????????????//?獲取文件名????
  • ???????????????fileName?=?url.Substring(url.LastIndexOf("\\")?+?1);??
  • ???????????}??
  • ???????????else??
  • ???????????{??
  • ???????????????//?url為文件名時,直接獲取文件名????
  • ???????????????fileName?=?url;??
  • ???????????}??
  • ???????????//?以字符流的方式下載文件????
  • ???????????FileStream?fileStream?=?new?FileStream(@url,?FileMode.Open);??
  • ???????????byte[]?bytes?=?new?byte[(int)fileStream.Length];??
  • ???????????fileStream.Read(bytes,?0,?bytes.Length);??
  • ???????????fileStream.Close();??
  • ???????????Response.ContentType?=?"application/octet-stream";??
  • ??
  • ???????????//?通知瀏覽器下載???
  • ???????????Response.AddHeader("Content-Disposition",?"attachment;?filename="?+?fileName);??
  • ???????????Response.BinaryWrite(bytes);??
  • ???????????Response.Flush();??
  • ???????????Response.End();???????
  • ???????}??
  • ?

    ?

    ? ? ? ? ??

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

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

    ?

    [html]?view plain?copy?

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

    ?

    ?

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

    總結

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

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