เมื่อเร็ว ๆ นี้ฉันพบปัญหาบางอย่างในการรับเส้นทางไฟล์เพราะฉันต้องการอัปโหลดไฟล์ไปยัง Oracle Blob เนื่องจากเหตุผลด้านความปลอดภัยเบราว์เซอร์ใหม่ไม่รองรับการได้รับ URL ในท้องถิ่นโดยตรง ฉันพบวิธีการออนไลน์บางอย่างดังนี้:
<script type = "text/javascript"> // fx รับไฟล์วิธีการของไฟล์วิธีการฟังก์ชัน function function filefirefox (filebrowser) {ลอง {netscape.security.privilegeManager.enablePrivilege ("UniversalxpConnect"); } catch (e) {Alert ('ไฟล์ท้องถิ่นไม่สามารถเข้าถึงได้เนื่องจากการตั้งค่าความปลอดภัยของเบราว์เซอร์เพื่อเอาชนะสิ่งนี้โปรดทำตามขั้นตอนต่อไปนี้: (1) ป้อน "เกี่ยวกับ: config" ในแถบที่อยู่ (2) คลิกขวาและเลือกใหม่-> boolean; เพื่อโหลดไฟล์ใหม่ '); กลับ; } var filename = fileBrowser.Value; // ขั้นตอนนี้สามารถรับเส้นทางที่สมบูรณ์ของลูกค้า การตัดสินด้านล่างนั้นซับซ้อนเกินไปและการตัดสินด้านล่างนั้นซับซ้อนมากเช่นกัน file var = components.classes ["@mozilla.org/file/local;1"] .createinstance (components.interfaces.nsilocalfile); ลอง {// back slashes สำหรับ windows file.initwithpath (ชื่อ filename.replace (//// g, "/////")); } catch (e) {ถ้า (e.result! = components.results.ns_error_file_unrecognized_path) โยน e; การแจ้งเตือน ("ไฟล์ '" + filename + "' ไม่สามารถโหลดได้: ไม่อนุญาตให้ใช้เส้นทางสัมพัทธ์โปรดระบุเส้นทางที่แน่นอนไปยังไฟล์นี้"); กลับ; } if (file.exists () == false) {alert ("ไฟล์ '" + filename + "' ไม่พบ"); กลับ; } return file.path;} // รับเส้นทางตามฟังก์ชันเบราว์เซอร์ที่แตกต่างกัน getVl (obj) {// ผู้ตัดสินเบราว์เซอร์ var sys = {}; var ua = navigator.useragent.toLowercase (); var s; (s = ua.match (/msie ([/d.like+)/))? 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 (/เวอร์ชัน // ([/d.]+).*Safari/))? sys.safari = s [1]: 0; var file_url = ""; if (sys.ie <= "6.0") {//ie5.5,Ie6.0 file_url = obj.value; } อื่นถ้า (sys.ie> = "7.0") {// ie7, ie8 obj.select (); file_url = document.selection.createrange (). ข้อความ; } อื่นถ้า (sys.firefox) {// fx // file_url = document.getElementById ("ไฟล์"). ไฟล์ [0] .getAsDataUrl (); // เส้นทางที่ได้รับคือสตริงที่เข้ารหัสที่ได้รับการยอมรับ } อื่นถ้า (sys.chrome) {file_url = obj.value; } // Alert (file_url); document.getElementById ("text"). innerhtml = "รับพา ธ ที่สมบูรณ์ของโดเมนไฟล์เป็น:"+file_url;} </script> <h1> เมธอด js เพื่อให้ได้เส้นทางที่สมบูรณ์ของโดเมนไฟล์ที่เข้ากันได้ onChange = "getVl (นี่)" />รหัสข้างต้นใช้ตามปกติใน IE 6 7 8 ภายใต้ IE9, document.election.createrange () ปฏิเสธการเข้าถึงซึ่งดูเหมือนว่าจะดีขึ้น
ในที่สุดการทดสอบพบว่าใน IE9 หากการควบคุมไฟล์ได้รับโฟกัส, document.selection.createrange () ปฏิเสธการเข้าถึง
ดังนั้นคุณจะต้องเพิ่มประโยค obj.blur () หลังจาก obj.select ()
อดีต:
อื่นถ้า (sys.ie> = "7.0") {// ie7, ie8 obj.select (); obj.blur (); file_url = document.selection.createrange (). ข้อความ; } // obj = document.getElementById ("ไฟล์");วิธีการข้างต้น (แนะนำ) สำหรับการได้รับเส้นทางสัมบูรณ์ของไฟล์อินพุตใน JS คือเนื้อหาทั้งหมดที่ใช้ร่วมกันโดยตัวแก้ไข ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น