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

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

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

    磨刀不誤砍柴工

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

       ::  ::  ::  :: 管理

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

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

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

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

    收集的資料貼出來:

    在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. //調用如下
    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訪問)以文件方式打開時仍然能實現IE6中的功能,但如果上述代碼放在IIS中,用IE7 通過HTTP協議訪問則不能正常工作。

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

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


    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#后臺代碼中獲取圖片的相應信息,只不過這種方式增加了一些不必要的網絡傳輸過程,有一定的性能代價。

    30. 資料二:

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

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


      AlphaImageLoader

      說明:

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

      語法:

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

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

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

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


      具體操作:

      1. 為預覽區域(比如要在某個 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 閱讀(919) 評論(0)  編輯  收藏 所屬分類: Others
    主站蜘蛛池模板: 亚洲国产成人精品无码区在线网站| 亚洲国产综合无码一区| 亚洲jjzzjjzz在线播放| 午夜不卡久久精品无码免费 | 精品国产免费一区二区三区| 亚洲AV日韩精品一区二区三区| 亚洲成a人片在线观看天堂无码 | 国产精品亚洲片在线观看不卡| www在线观看免费视频| 亚洲中文字幕久久精品无码喷水 | 久久久久亚洲爆乳少妇无 | 国产麻豆免费观看91| 亚洲AV无码片一区二区三区 | 妞干网免费视频在线观看| 亚洲成AV人片高潮喷水| 免费在线黄色网址| 国产成人高清精品免费观看| 亚洲中文字幕无码中文字在线| 久久精品无码专区免费东京热| 亚洲国产成人久久精品app| 成人免费视频观看无遮挡| 国产精品亚洲一区二区三区| 亚洲色偷偷综合亚洲AV伊人| 一个人免费视频观看在线www| 久久久久久亚洲AV无码专区| 免费观看AV片在线播放| 国产亚洲视频在线观看| 国产精品亚洲а∨无码播放| 真人做人试看60分钟免费视频 | 亚洲欧美日韩综合久久久久| 免费一级肉体全黄毛片| 成人电影在线免费观看| 国产亚洲精品bv在线观看| 亚洲av午夜精品一区二区三区 | 亚洲AV无码国产剧情| 亚洲综合另类小说色区| 国产妇乱子伦视频免费| 黄色网址大全免费| 亚洲综合精品香蕉久久网97| 国产精品免费播放| 91青青青国产在观免费影视|