對于Asp.Net中的編程完成下載
發(fā)表時間:2024-01-26 來源:明輝站整理相關軟件相關文章人氣:
經(jīng)常在論壇看見有人求Asp.Net中編程實現(xiàn)下載的代碼,有些還希望能斷點續(xù)傳什么的。
其實問題的關鍵在于權限。B/S和C/S不僅僅是外觀上的區(qū)別而已。
下載,顧名思義是客戶端要下,所以載。你硬塞給人家那不叫下載,那其實是“從服務器‘上傳’到客戶端”。
有些人的想法是向客戶端“寫一個”你打算他下載的“文件”,在C/S結構中是沒有問題的,因為C端來寫。但是在Asp.net卻是不行的,一定會彈出權限的錯誤,因為B/S結構中沒有個C端給你,S端是不可能獲得客戶機硬盤的寫權限的,要不還不是世界大亂了?
上傳和下載的根本區(qū)別在于一個是“本地主動送”,一個是“本地主動收”。他們都需要有一方來“主動”,上傳需要對遠程有寫權限,下載需要對遠程有讀權限,F(xiàn)在的情況是服務器根本對客戶端沒有讀寫權限,所以實際上在B/S里寫這種代碼沒有用。
換個思路,我不要服務器主動,我讓客戶端主動可以嗎?
1、IE的下載功能。包括Http協(xié)議中規(guī)定的下載(對IE本身無法打開的連接文件類型會提示用戶是否下載)這是最方便的,你只要給個超級連接就行了,一點代碼都不用。局限性在于只對“當前IE無法打開的文件類型”有效。這就是為什么同個東西有些人點了打開瀏覽,有些人是提示下載,就是瀏覽器不同(包括組件、版本等)。
2、javascript主動向服務器請求文件,并由js向硬盤上寫。(本人沒嘗試過,所以到底可行與否不知道)
3、由瀏覽器以外的客戶端程序來執(zhí)行寫操作。C/S版因為有客戶端,簡單的和什么一樣。。。B/S版里有什么是“瀏覽器以外的客戶端程序”而又是你可以訪問的??沒錯,木馬!放個木馬絕對沒問題(廢話。。)至于怎么放那就是另一方面的事情了。。。
4、讓客戶端以為這是IE的插件(這也許是,也許不是,不是你就要偽裝來騙它),這是3721等喜歡使用的方法。局限性在于和瀏覽器的設置有關,如果設置關掉相應的自動選項,你急也沒辦法!
所以,完全用Asp.net在服務器上主觀要求客戶端“下載”,是很難以實現(xiàn)的。需要配合其他手段 。