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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Mvc 下载文件

發布時間:2025/7/14 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mvc 下载文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你如何將文件傳送給用戶取決于你最開始如何存儲它,如果你將文件存入數據庫,你會用流的方式將文件返還給用戶,如果你將文件存在硬盤中,你只需要提供一個超鏈接即可,或者也可以以流的方式。每當你需要以流的方式將文件送到瀏覽器中,你都的使用到File()方法的重載(而不是使用我們先前一直使用的View()方法),對于File()方法有3類返回類型:FilePathResult,FileContentResult和FileStreamResult,第一種類型用于直接從磁盤返回文件;第二種類型用于將byte數組返回客戶端;而第三種方式將已經生成并打開的流對象的內容返回客戶端。


如果我們將上傳的文件存入了數據庫,并以byte數組的形式存入FileContent域內.而當需要提取時,它仍然會以一個byte數組進行提取,這意味著我們使用返回FileContentResult的File()重載,如果我們想讓提取的文件名更有意義,我們使用接受3個參數的重載,三個參數是:byte數組,MIME類型,文件名:

?Code

public FileContentResult GetFile(int id) {SqlDataReader rdr; byte[] fileContent = null; string mimeType = "";string fileName = "";const string connect = @"Server=.\SQLExpress;Database=FileTest;Trusted_Connection=True;";using (var conn = new SqlConnection(connect)){var qry = "SELECT FileContent, MimeType, FileName FROM FileStore WHERE ID = @ID";var cmd = new SqlCommand(qry, conn);cmd.Parameters.AddWithValue("@ID", id);conn.Open();rdr = cmd.ExecuteReader();if (rdr.HasRows){rdr.Read();fileContent = (byte[])rdr["FileContent"];mimeType = rdr["MimeType"].ToString();fileName = rdr["FileName"].ToString();}}return File(fileContent, mimeType, fileName); }

?

在View中最簡單的使用來使用這個Action只需提供一個超鏈接:

<a href="/GetFile/1">Click to get file</a>

?


如果在數據庫中存儲的圖片是圖片類型,和使用超鏈接不同的是,我們通過指向Controller action的一個帶有src屬性的<image>標簽來獲取:

<img src="/GetFile/1" alt="My Image" />

?

下面再讓我們來看看使用FilePathResult(用于從硬盤提取文件)是多簡單的事:

?Code

public FilePathResult GetFileFromDisk() {string path = AppDomain.CurrentDomain.BaseDirectory +"uploads/";string fileName = "test.txt";return File(path +fileName, "text/plain", "test.txt"); }

?


而這也可以用過超鏈接提取:

<a href="/GetFileFromDisk">Click to get file</a>

?


而最后一個選擇FileStreamResult也可以從磁盤中提取文件:

?Code

public FileStreamResult StreamFileFromDisk() {string path = AppDomain.CurrentDomain.BaseDirectory +"uploads/";string fileName = "test.txt";return File(new FileStream(path + fileName, FileMode.Open), "text/plain", fileName); }

?


FilePathResult和FileStreamResult的區別是什么?我們又該如何取舍呢?主要的區別是FilePathResult使用HttpResponse.TransmitFile來將文件寫入Http輸出流。這個方法并不會在服務器內存中進行緩沖,所以這對于發送大文件是一個不錯的選擇。他們的區別很像DataReader和DataSet的區別。于此同時, TransmitFile還有一個bug,這可能導致文件傳到客戶端一半就停了,甚至無法傳送。而FileStreamResult在這方面就很棒了。比如說:返回Asp.net Chart 控件在內存中生成的圖表圖片,而這并不需要將圖片存到磁盤中.

轉載于:https://www.cnblogs.com/kongfl888/p/3377437.html

總結

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

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

主站蜘蛛池模板: 婷婷九月综合 | 五月天最新网址 | 中文无码一区二区三区在线观看 | 寻找身体恐怖电影免费播放 | 中国三级视频 | 国产午夜福利片 | 国产高清精品一区二区三区 | 日韩成人在线播放 | 久久久久久91 | 国产小视频在线播放 | 成人免费毛片入口 | 国产精品国产三级国产在线观看 | 精品一区二区免费看 | 久精品免费视频 | 欧美高潮视频 | 日本中文字幕一区二区 | 日本少妇久久久 | 国产精品电影在线观看 | 国产一区二区三区视频播放 | 亚洲成人天堂 | 日本xx片 | 国产制服丝袜 | 久久久久久网址 | 日本一区二区在线观看视频 | 天堂资源 | 色呦呦| 男女日日 | a天堂资源| 国产青青视频 | 一区二区三区在线 | 天天干天天添 | 公与妇乱理三级xxx www色 | 国产精品久久久久久99 | 亚洲av无码乱码在线观看性色 | 精品久久国产字幕高潮 | 午夜激情福利 | 欧美日韩影院 | 亚洲欧美国产另类 | 乱子伦一区 | 久久视频免费在线观看 | 在线播放不卡av | 久久精品10| 欧美天天性影院 | 国产精品无码久久av | 青娱乐超碰 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 久草剧场| 91视频在线观看网站 | 97人人在线视频 | 91麻豆精品秘密入口 | 黄色免费看片 | 免费三级黄| 日本精品一区在线观看 | 欧美精品大片 | 女女同性被吸乳羞羞 | 亚洲三级成人 | 激情小说五月天 | 国产亚洲精品码 | 亚洲字幕在线观看 | 精品国偷自产国产一区 | 国产一区二区三区久久 | 久久久久久无码精品大片 | 精品人妻一区二区三区四区不卡 | 天天综合天天综合 | 日韩有码中文字幕在线 | 女生扒开尿口让男生桶 | 欧美jizz19性欧美 | 天堂网2018 | 在线看a网站 | 久久99精品久久久久 | 免费黄色在线网址 | avtt香蕉久久| xxxwww在线观看| 久久久久女教师免费一区 | 日日摸夜夜添狠狠添欧美 | 黄色大片儿 | 亚洲综合激情 | 久久色资源网 | 亚洲综合干 | 一曲二曲三曲在线观看中文字幕动漫 | 黄色大片在线免费观看 | 亚洲精品视频专区 | 香蕉大人久久国产成人av | 男人操女人免费视频 | 丁香婷婷综合激情五月色 | 麻豆午夜视频 | 黄色片在哪里看 | 台湾佬综合网 | 久久久精品人妻一区二区三区 | 亚洲天堂国产 | 在线观看免费国产视频 | 欧州一区 | 国产在线a视频 | 亚洲精品aⅴ中文字幕乱码 国产精品调教视频 | 亚洲成人精品一区二区三区 | 欧美激情婷婷 | 国产三级精品在线观看 | 精品亚洲综合 | 麻豆久久久久 |