我们都知道用IE的方法读取文件路径会读取到fakepath,这是Microsoft为了网络安全而做的设定。
其实这很傻,很多方法都可以绕开这种设定。以下是JavaScript下的实现方法:
function ieFileRead(){
var READYSTATE_COMPLETE = 4;
var OLECMDID_COPY = 12;
var OLECMDID_PASTE = 13;
var OLECMDID_SELECTALL = 0x11;
var OLECMDEXECOPT_DODEFAULT = 0;
var ie, body, dialog, fname, text;
ie = WScript.CreateObject("InternetExplorer.Application");
ie.Navigate("about:blank");
body = ie.document.getElementsByTagName("body")[0];
body.innerHTML = "<input type=\'file\' id=\'fileDialog\'><textarea id=\'text\'></textarea>";
while (ie.Busy || ie.ReadyState !== READYSTATE_COMPLETE) {
WScript.sleep(10);
}
dialog = ie.document.all.fileDialog;
dialog.click();
fname = dialog.value;
if (fname === "") {
return("Please select a file...");
} else {
dialog.focus();
ie.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
ie.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);
text = ie.document.all.text;
text.focus();
ie.ExecWB(OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT);
fname = text.value;
return(fname);
}
text = undefined;
dialog = undefined;
body = undefined;
ie.Quit();
ie = undefined;
}