1. 程式人生 > >js/jquery 獲取本地檔案的檔案路勁 獲取input框中type=‘file’ 中的檔案路徑

js/jquery 獲取本地檔案的檔案路勁 獲取input框中type=‘file’ 中的檔案路徑

分為兩部分,自己去判斷瀏覽器的型別,然後呼叫不同函式,一定要引入jQuery,上面是我的Jquery的路徑

在IE低版本中可以直接獲得檔案路徑,不過在高版本和firefox和chrome中是不允許的。那是個漏洞

這樣就能實現不用上傳就可以實現圖片的實時預覽了

1.IE核心的部分,IE10 沒問題,別的沒試,

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml"
    >
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
  5. <title>無標題文件</title>
  6. <scripttype="text/javascript"src="軟體工程概論/軟體工程實驗原型/js/jquery-1.8.3.min.js"></script>
  7. <scripttype="text/javascript">
  8. var imgurl = "";  
  9. function getImgURL(node) {    
  10.     var imgURL
     = "";      
  11.     var file = null;  
  12.     if(node.files && node.files[0] ){  
  13.         file = node.files[0];   
  14.     }else if(node.files && node.files.item(0)) {                                  
  15.         file = node.files.item(0);     
  16.     }     
  17.     //這種獲取方式支援IE10    
  18.     node.select();    
  19.     imgURL
     = document.selection.createRange().text;      
  20.     alert(imgURL);  
  21.     var textHtml = "<img src='"+imgURL+"'/>";     //建立img標籤用於顯示圖片  
  22.     alert(textHtml);  
  23.     $(".mark").after(textHtml);  
  24.     return imgURL;  
  25. }  
  26. </script>
  27. </head>
  28. <body>
  29.     <divstyle="width:200px; height:210px; border:1px solid red;"id="show">
  30.         <divclass="mark"></div>
  31.     </div>
  32. <br>
  33. <inputtype="file"value="上傳檔案"onchange="getImgURL(this)">
  34. </body>
  35. </html>

2.火狐和chrome瀏覽器,其實這個獲得的檔案路徑不是我們能看懂的,它是一個物件,不過瀏覽器能解析,可能出於瀏覽器的安全考慮吧,本來不能顯示檔案路徑
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
  5. <title>無標題文件</title>
  6. <scripttype="text/javascript"src="軟體工程概論/軟體工程實驗原型/js/jquery-1.8.3.min.js"></script>
  7. <scripttype="text/javascript">
  8. var imgurl = "";  
  9. function getImgURL(node) {    
  10.     var imgURL = "";      
  11.     try{     
  12.         var file = null;  
  13.         if(node.files && node.files[0] ){  
  14.             file = node.files[0];   
  15.         }else if(node.files && node.files.item(0)) {                                  
  16.             file = node.files.item(0);     
  17.         }     
  18.         //Firefox 因安全性問題已無法直接通過input[file].value 獲取完整的檔案路徑  
  19.         try{  
  20.             //Firefox7.0   
  21.             imgURL =  file.getAsDataURL();    
  22.             //alert("//Firefox7.0"+imgRUL);                           
  23.         }catch(e){  
  24.             //Firefox8.0以上                                
  25.             imgRUL = window.URL.createObjectURL(file);  
  26.             //alert("//Firefox8.0以上"+imgRUL);  
  27.         }  
  28.      }catch(e){      //這裡不知道怎麼處理了,如果是遨遊的話會報這個異常                   
  29.         //支援html5的瀏覽器,比如高版本的firefox、chrome、ie10  
  30.         if (node.files && node.files[0]) {                            
  31.             var reader = new FileReader();   
  32.             reader.onload = function (e) {                                        
  33.                 imgURL = e.target.result;    
  34.             };  
  35.             reader.readAsDataURL(node.files[0]);   
  36.         }    
  37.      }  
  38.     //imgurl = imgURL;  
  39.     creatImg(imgRUL);  
  40.     return imgURL;  
  41. }  
  42. function creatImg(imgRUL){   //根據指定URL建立一個Img物件  
  43.     var textHtml = "<img src='"+imgRUL+"'/>";  
  44.     $(".mark").after(textHtml);  
  45. }  
  46. </script>
  47. </head>
  48. <body>
  49.     <divstyle="width:90px; height:110px; overflow:hidden; border:1px solid red;"id="show">
  50.         <divclass="mark"></div>
  51.     </div>
  52. <br>
  53. <inputtype="file"value="上傳檔案"onchange="getImgURL(this)">
  54. </body>
  55. </html>

3.其餘的瀏覽器。我沒有測試,不過國內的其他如360和遨遊,等都有兩種模式,一種是IE核心,這(1)中可以執行,第二種核心沒找到好方法

4.推薦出處