최근에 파일을 Oracle Blob에 업로드해야했기 때문에 파일 경로를 얻는 데 몇 가지 문제가 발생했습니다. 보안상의 이유로 인해 새 브라우저는 로컬 URL을 직접 얻는 것을 지원하지 않습니다. 다음과 같이 온라인에서 몇 가지 방법을 찾았습니다.
<script type = "text/javaScript"> // fx 파일 경로 메소드 기능 readfilefirefox (filebrowser) {try {netscape.security.privilegemanager.enableprivilege ( "UniversalxpConnect"); } catch (e) {alert ( '브라우저 보안 설정으로 인해 로컬 파일에 액세스 할 수 없습니다.이를 극복하려면 다음 단계를 따르려면 다음 단계를 따르십시오. 파일을 다시로드하려면 '); 반품; } var filename = FileBrowser.Value; //이 단계는 클라이언트의 전체 경로를 얻을 수 있습니다. 아래의 판단이 너무 복잡하고 아래의 판단도 매우 복잡합니다. var file = components.classes [ "@mozilla.org/file/local ;1"] .CreateInstance (components.interfaces.nsilocalfile); {// Windows file.initwithPath (filename.replace (//// g, "///")에 대한 후면 슬래시를 시도하십시오. } catch (e) {if (e.result! = components.results.ns_error_file_unrecognized_path) Throw e; ALERT ( "file '" + filename + "'를로드 할 수 없습니다 : 상대 경로는 허용되지 않습니다.이 파일에 절대적인 경로를 제공하십시오."); 반품; } if (file.exists () == false) {alert ( "file '" + filename + "'찾을 수 없음"); 반품; } return file.path;} // 다른 브라우저에 따라 경로를 가져옵니다. 함수 getVl (obj) {// 판사 브라우저 var sys = {}; var ua = navigator.useragent.tolowercase (); var s; (s = ua.match (/msie ([/d.] +)/))? sys.ie = s [1] : (s = ua.match (/firefox // ([/d.]+)/))? sys.firefox = s [1] : (s = ua.match (/chrome // ([/d.]+)+)/))? sys.chrome = s [1] : (s = ua.match (/opera. ([/d.]+)+)/))? sys.opera = s [1] : (s = ua.match (/version // ([/d.]+).*safari/))? sys.safari = s [1] : 0; var file_url = ""; if (sys.ie <= "6.0") {//ie5.5,ie6.0 file_url = obj.value; } else if (sys.ie> = "7.0") {// ie7, ie8 obj.select (); file_url = document.selection.createrange (). 텍스트; } else if (sys.firefox) {// fx // file_url = document.getElementById ( "file"). files [0] .getAsdataurl (); // 획득 된 경로는 ff file_url = readfilefirefox (obj)로 인식 된 암호화 된 문자열입니다. } else if (sys.chrome) {file_url = obj.value; } // alert (file_url); document. onchange = "getVl (this)" />위의 코드는 정상적으로 IE 6 7 8에서 사용됩니다. IE9에서 문서화 .Selection.Createrange ()는 액세스가 거부되며 개선 된 것으로 보입니다.
마지막으로, 테스트는 IE9에서 파일 컨트롤이 초점을 맞추면 document.selection.createrange ()가 액세스를 거부한다는 것을 발견했습니다.
따라서 obj.select () 이후에 문장 obj.blur () 만 추가하면됩니다.
전:
else if (sys.ie> = "7.0") {// ie7, ie8 obj.select (); obj.blur (); file_url = document.selection.createrange (). 텍스트; } // obj = document.getElementById ( "file");JS에서 입력 파일의 절대 경로를 얻기위한 위의 방법 (권장)은 편집기가 공유하는 모든 컨텐츠입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.