防止圖片在WEB頁面上下載

今天應項目的要求做了個防止IE中圖片被下載的東東!
需說不是絕對的,但對於一般人來說來是可以的---個人認為:)
下面來看看實 現個程吧!

1. 前台界面:

 1 < asp:DataList  ID ="dgClient"  Runat ="server"  RepeatColumns ="2" >
 2      < ItemStyle  Width ="50%" ></ ItemStyle >
 3      < ItemTemplate >
 4          < table >
 5              < tr >
 6                  < td >
 7                      < img  src ='./ShowImage.aspx?PATH=<%#  Server.UrlEncode(DataBinder.Eval(Container.DataItem,"DTSmallImage").ToString())% > ' border='0' width="133" height="100" />
 8                  </ td >
 9                  < td  class ="intro0" >
10 ExpandedBlockStart.gifContractedBlock.gif                     <% #DataBinder.Eval(Container.DataItem,"DTTitle" %>
11                      < br >
12                     會員免費下載 < br >
13                     >> < href ='<%#DataBinder.Eval(Container.DataItem,"DTBigImage")  % > '>下載1024*768  </ a >
14                      < br >
15                     >> < href ='<%#DataBinder.Eval(Container.DataItem,"DTSmallImage")  % > '>下載800*600  </ a >
16                      < br >
17                  </ td >
18              </ tr >
19          </ table >
20      </ ItemTemplate >
21 </ asp:DataList >

其主要為以下這句代碼:
< img  src ='./ShowImage.aspx?PATH=<%#  Server.UrlEncode(DataBinder.Eval(Container.DataItem,"DTSmallImage").ToString())% > ' border='0' />
其上語句是通過ShowImage.aspx文件來緩存輸出圖 片,以達到顯示的只是圖片的影象效果,而不存在其實際圖片.所以在HTML代碼中看到的也只是<img src='./ShowImage.aspx?PATH=2005811184295.jpg' border='0'>,從而因無法獲得圖片路徑而不能下載,當然一般來說截頻可以獲得到對應的圖片,那麼下面看看
我是怎麼防止用戶截頻來 獲得正確的圖片的吧
2.ShowImage.aspx文件的後台代碼
 1 string  path  =  Request.QueryString[ " PATH " ];
 2 string  EArtURL  =  ConfigurationSettings.AppSettings[ " EArtURL " ];
 3 path  =  EArtURL  +  " /NetWorkMamage1/DeskTopSmallImages/ "  +   path;
 4 System.Net.WebClient client  =  new  System.Net.WebClient();
 5 string  ExpFileName  =  FileLib.GetFileExName(path);
 6 string  LocalPath  =  Server.MapPath( " ./new111. "  +  ExpFileName );
 7 if (System.IO.File.Exists(LocalPath))
 8 ExpandedBlockStart.gifContractedBlock.gif {
 9    FileLib.DeleteFile(LocalPath);
10}

11 client.DownloadFile(path,LocalPath);
因以上圖片 都是放在其它WEB站台下面,所以采用以上簡單的代碼來保存到
當前站台下面的臨時文件中,圖上為當前目錄下的new111.jpg,因顯示的圖片 是不確定的個數也不確定,所以保存前先刪除掉其下原來的臨時文件,已保正
當前臨時文件為最新的文件
1 System.IO.StreamReader reader  =  new  System.IO.StreamReader(LocalPath);
2
3 System.IO.Stream stream  =  reader.BaseStream;
4 byte [] bys  =  new  byte [stream.Length];
5 stream.Read(bys, 0 ,( int )stream.Length);
6 System.IO.MemoryStream memory  =  new  System.IO.MemoryStream(bys, 0 ,( int )stream.Length);
7 stream.Close();
如前台所示,因在一個頁面要顯示多個圖片,而臨時文件又 只有一個,如沒
有以上代碼那麼在下載第二個臨時文件時,定會因第一個文件正在使用而無
法保存,怎麼說:大家想想一般緩沖輸出圖片都是將這 個圖片所占的硬盤空
間讀入到內存中再輸出,因現在只存在一個臨時圖片文件,後來的文件確需
要刪除先前的文件以保持最新的操作(即 DataList每次邦定時都會調用ShowImage.aspx文件來顯示當前圖片),但當前文件雙在使用中需無法刪除或
保存,所以本人才采用 以上代碼來創建當前圖片文件的一個備份放入MemoryStream,再結束對實際圖片的調用stream.Close();
1 ImagesEntry.ScaleImagesLib scanle  =  new  ImagesEntry.ScaleImagesLib();
2                  if (scanle.Create(memory, 133 , 100 ))
3 ExpandedBlockStart.gifContractedBlock.gif                 {
4                    scanle.Show();
5                }

6                  if (scanle.LastError != null )
7 ExpandedBlockStart.gifContractedBlock.gif                 {
8                    //輸出出錯圖片
9                }

以上代碼是對圖片對進縮放處理
還可以對要顯示的圖片加上透明,水印,模糊處理等等,總之能讓其截頻出
也達不到實際的效果。

以 上是偶的一定愚見   

      還望大多多指正:) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值