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

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

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

    磨刀不誤砍柴工

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

       ::  ::  ::  :: 管理

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

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

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

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

    收集的資料貼出來:

    在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預(yù)覽要上傳的圖片,并獲取圖片的文件大小:


    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")............}

    當(dāng)在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一樣正常工作。

    如果不想通過客戶將本站點設(shè)置為"可信"站點的方式來實現(xiàn)上傳圖片的預(yù)覽及獲取圖片長寬信息,則可以利用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" ; //這個設(shè)置初始大小是必須的
    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#后臺代碼中獲取圖片的相應(yīng)信息,只不過這種方式增加了一些不必要的網(wǎng)絡(luò)傳輸過程,有一定的性能代價。

    30. 資料二:

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

      在 IE6 中,可以很方便地利用 img 的 src 屬性,實現(xiàn)本地圖片預(yù)覽,然而在 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)。設(shè)置或檢索濾鏡是否激活。
      true:默認值。濾鏡激活。
      false:濾鏡被禁止。

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

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


      具體操作:

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

      示例代碼:


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

      相關(guān)閱讀:http://www.cftea.com/products/ 很好的學(xué)習(xí)地方

    posted on 2008-09-22 14:23 liwei5891 閱讀(926) 評論(0)  編輯  收藏 所屬分類: Others
    主站蜘蛛池模板: 免费看美女被靠到爽| 亚洲黄色片免费看| 曰批全过程免费视频免费看| 成年女人视频网站免费m| 亚洲一区免费视频| 一区二区无码免费视频网站| 亚洲 欧洲 自拍 另类 校园| 日韩视频在线免费观看| 麻豆69堂免费视频| 亚洲免费日韩无码系列| a毛片免费全部在线播放**| 久久亚洲国产中v天仙www| 免费人成在线观看网站| 亚洲人成网址在线观看| 久久久久久久91精品免费观看| 久久精品国产亚洲AV忘忧草18| 毛片网站免费在线观看| 亚洲A∨精品一区二区三区下载| 国产一区二区三区在线免费观看| 一级看片免费视频| 国产亚洲婷婷香蕉久久精品| 亚洲视频在线观看免费视频| 亚洲AV日韩综合一区尤物| 又黄又大又爽免费视频| 成人av片无码免费天天看| 亚洲另类激情综合偷自拍| 国产精品久久久久免费a∨| 自拍偷自拍亚洲精品播放| 亚洲综合AV在线在线播放| 最近2019年免费中文字幕高清 | 久久亚洲中文字幕无码| 久久久久亚洲AV无码专区桃色| 久久成人免费大片| 亚洲色精品三区二区一区| 亚洲国产精品日韩专区AV| 久久99精品国产免费观看| 亚洲AV无码AV日韩AV网站| 亚洲精品自在在线观看| 成年女人看片免费视频播放器| 一级一级一片免费高清| 亚洲国产成人九九综合|