<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    磨刀不誤砍柴工

    合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。

       ::  ::  ::  :: 管理

    在項目中,有上傳本地圖片先預覽的功能。原先在本機IE6,IE7瀏覽器中可正常預覽的功能,但在將項目布暑到遠程服務器的時候,在IE7中不能預覽了。此問題,在之前同事的IE7訪問我機子預覽時也出現(xiàn)過,當時沒在意,認為系統(tǒng)不會有問題。

    今天,上網(wǎng)找了許久,終于知道了,這原來是IE7中加強了安全限制。通過http訪問的頁面默認是沒有訪問用戶本機圖片文件的權(quán)限的,所以通過javascript獲取不了本機的圖片路徑等相關信息。網(wǎng)上也有幾種解決方案,一種是通過利用style的"DXImageTransform.Microsoft.AlphaImageLoader" 濾鏡來實現(xiàn),而另一種,則是設置當前站點為安全站點即可。

    由于,預覽還涉及到圖片旋轉(zhuǎn)等,利用"DXImageTransform.Microsoft.AlphaImageLoader"方式,確不知道該如何旋轉(zhuǎn)此濾鏡中的圖片,故暫時決定采用設置安全性方式,有勞用戶了。

    一些莫名其妙的錯誤都是有源頭的。

    收集的資料貼出來:

    在IE6.0中,用戶可以在javascript中或許最終用戶本地圖片的長寬:

    1. <Script language=Javascript>
    2. function getLocalImageInfo( imgUrl )
    3. {
    4. var objImg = new Image();
    5. objImg.src = imgUrl;
    6. alert( objImg.width ) //the width of the local image
    7. alert( objImg.height ) //the height of the local image
    8. }
    9. //調(diào)用如下
    10. getLocalImageInfo( "file://c:\1.jpg" );
    11. </Script>

    并且,在IE6.0中,在客戶端本地上傳圖片前可以通過Javascript/html預覽要上傳的圖片,并獲取圖片的文件大小:


    1. < html >
    2. < head >
    3. < title > Upload file </ title >
    4. </ head >
    5. < body >
    6. < input type = "file" onchange = "javascript:previewImage(this.value)" >
    7. < img id = "img" />
    8. < script language = "javascrtip" >
    9. function previewImage( imgUrl )
    10. {
    11. var objImg = document .getElementById("img");
    12. objImg.src = imgUrl ;
    13. alert( "the size of the image file:" + objImg.fileSize )
    14. }
    15. </ script >
    16. </ body >
    17. </ html >

    Note: 上面的代碼最好在img圖片加載完畢后再取圖片的大小,例如:objImg.onreadystatechange()=function{ if(objImg.readystate=="complete")............}

    當在IE7中,如果上述代碼放在客戶機本機(以html的形式放在客戶機器上,而不是放在IIS中通過http訪問)以文件方式打開時仍然能實現(xiàn)IE6中的功能,但如果上述代碼放在IIS中,用IE7 通過HTTP協(xié)議訪問則不能正常工作。

    經(jīng)過查找資料才發(fā)現(xiàn)IE7在安全性方面做了提升,通過http訪問的頁面默認是沒有訪問用戶本機圖片文件的權(quán)限的,所以通過javascript獲取不了本機的圖片長寬,也不能將本機圖片地址賦值給<img>對象。如果將所訪問的站點放入"可信站點"列表中(IE7->工具->Internet選項->安全->可信站點),則可以如IE6一樣正常工作。

    如果不想通過客戶將本站點設置為"可信"站點的方式來實現(xiàn)上傳圖片的預覽及獲取圖片長寬信息,則可以利用style的"DXImageTransform.Microsoft.AlphaImageLoader" 濾鏡來實現(xiàn):


    1. < html >
    2. < head id = "Head1" runat = "server" >
    3. < title > Untitled Page </ title >
    4. < script language = javascript >
    5. function setImagePreview( fileUrl )
    6. {
    7. var objDivFilter = document .getElementById("divFilter")
    8. if( fileUrl )
    9. {
    10. objDivFilter.style.width = "400px" ;
    11. objDivFilter.style.height = "400px" ; //這個設置初始大小是必須的
    12. objDivFilter.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = image)" ;
    13. objDivFilter.filters.item("DXImageTransform.Microsoft.AlphaImageLoader") .src = fileUrl ;
    14. // get width and height
    15. alert( objDivFilter.offsetWidth)
    16. alert( objDivFilter.offsetHeight)
    17. }
    18. }
    19. </ script >
    20. </ head >
    21. < body >
    22. < form id = "form1" runat = "server" >
    23. < div >
    24. < asp:FileUpload ID = "txtFile" runat = "server" Width = "508px" onchange = "javascript:setImagePreview( this.value );" />
    25. < br />
    26. < div id = "divFilter" />
    27. </ div >
    28. </ form >
    29. </ body >

      但上述辦法還不能在客戶端獲取圖片文件的大小,我也沒有找到很好的解決方案

      另外:在.net中,可以在C#后臺代碼中獲取圖片的相應信息,只不過這種方式增加了一些不必要的網(wǎng)絡傳輸過程,有一定的性能代價。

    30. 資料二:

    31. 本地圖片預覽代碼(支持 IE6、IE7)

      在 IE6 中,可以很方便地利用 img 的 src 屬性,實現(xiàn)本地圖片預覽,然而在 IE7 中,這種辦法卻行不通。需要用 AlphaImageLoader


      AlphaImageLoader

      說明:

      在對象容器邊界內(nèi),在對象的背景和內(nèi)容之間顯示一張圖片。并提供對此圖片的剪切和改變尺寸的操作。如果載入的是PNG(Portable Network Graphics)格式,則0%-100%的透明度也被提供。

      語法:

      filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )

      enabled:可選項。布爾值(Boolean)。設置或檢索濾鏡是否激活。
      true:默認值。濾鏡激活。
      false:濾鏡被禁止。

      sizingMethod:可選項。字符串(String)。設置或檢索濾鏡作用的對象的圖片在對象容器邊界內(nèi)的顯示方式。
      crop:剪切圖片以適應對象尺寸。
      image:默認值。增大或減小對象的尺寸邊界以適應圖片的尺寸。
      scale:縮放圖片以適應對象的尺寸邊界。

      src:必選項。字符串(String)。使用絕對或相對 url 地址指定背景圖像。假如忽略此參數(shù),濾鏡將不會作用。


      具體操作:

      1. 為預覽區(qū)域(比如要在某個 div 中預覽)添加樣式:filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);。
      2. 為 AlphaImageLoader 設置 src 屬性。

      示例代碼:


      [Ctrl+A 全部選擇 提示:您可先修改部分代碼,再按運行]

      相關閱讀:http://www.cftea.com/products/ 很好的學習地方

    posted on 2008-09-22 14:23 liwei5891 閱讀(918) 評論(0)  編輯  收藏 所屬分類: Others
    主站蜘蛛池模板: 亚洲狠狠爱综合影院婷婷| A级毛片内射免费视频| 亚洲精品视频在线看| 男性gay黄免费网站| 免费国产精品视频| 香港特级三A毛片免费观看| 国产又粗又长又硬免费视频| 亚洲一卡2卡3卡4卡5卡6卡| 成年午夜视频免费观看视频| 亚洲一本到无码av中文字幕| 久久久久国色AV免费观看性色| 亚洲国产午夜精品理论片在线播放 | 亚洲第一页在线视频| 永久黄色免费网站| 亚洲AV男人的天堂在线观看| 男女啪啪永久免费观看网站| 亚洲av纯肉无码精品动漫| 亚洲日本韩国在线| 免费91麻豆精品国产自产在线观看| 老司机亚洲精品影院| 国内自产少妇自拍区免费| 无码人妻一区二区三区免费视频 | 久久精品人成免费| 亚洲一区中文字幕| 免费不卡中文字幕在线| 大地资源在线资源免费观看| 亚洲熟妇无码久久精品| 免费视频淫片aa毛片| A毛片毛片看免费| 亚洲中文字幕久在线| 又爽又高潮的BB视频免费看| 国产免费拔擦拔擦8X高清在线人| 亚洲成a人片7777| 亚洲成a人片在线观看久| 无码一区二区三区免费| 亚洲熟妇丰满xxxxx| 色久悠悠婷婷综合在线亚洲| 67194熟妇在线永久免费观看| 免费看一级一级人妻片| 中文字幕亚洲综合久久2| 免费一区二区三区四区五区|