在使用控件上傳檔案時,不論是什麼路徑上傳的檔案,路徑都變成了"C:\fakepath\"+檔案名的形式。
原來在IE7及以前的IE浏覽器版本上都沒有問題,換到了IE8上面,就不行了。
在IE8中你隻能擷取到的上傳檔案的路徑:"C:\fakepath\xxx”,其中xxx是你的檔案名。
經查詢,這是ie8下的安全設定問題。
原來,IE8出于安全性的考慮,上傳檔案時屏蔽了真實的本地檔案路徑,而以“C:\fakepath\”取代之。
如果我們想要擷取真實的本地檔案路徑怎麼辦呢? 你可以通過設定浏覽器安全選項得到真實路徑:
Internet選項 -> 安全 -> 自定義級别 -> 将本地檔案上載至伺服器時包含本地目錄路徑 -> 選“啟動” -> 确定
但作為開發人員,我們不希望使用者去設定浏覽器,我們必須通過代碼解決這個問題。
下方的是不用修改浏覽器安全配置的javascript代碼,相容ie, firefox全系列的代碼。
//參數obj為input file對象
function getPath(obj)
{
if(obj)
{
if (window.navigator.userAgent.indexOf("MSIE")>=1)
{
obj.select();
return document.selection.createRange().text;
}
else if(window.navigator.userAgent.indexOf("Firefox")>=1)
{
if(obj.files)
{
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}
聲明:如需轉載,請注明來源于www.webym.net并保留原文連結:http://www.webym.net/jiaocheng/257.html