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