في الآونة الأخيرة ، واجهت بعض المشكلات في الحصول على مسار الملف لأنني كنت بحاجة إلى تحميل الملفات إلى Oracle Blob. لأسباب أمنية ، لا يدعم المتصفح الجديد الحصول مباشرة على عناوين URL المحلية. لقد وجدت بعض الطرق عبر الإنترنت ، على النحو التالي:
<script type = "text/javaScript"> // get get file path method function readfilefirefox (filebrowser) {try {netscape.security.privilegemanager.enableprivilege ("UniversalxpConnect") ؛ } catch (e) {Alert ('لا يمكن الوصول إلى الملف المحلي بسبب إعدادات أمان المتصفح. للتغلب على هذا ، يرجى اتباع الخطوات التالية: (1) أدخل "حول: config" لإعادة تحميل الملف ') ؛ يعود؛ } var filename = filebrowser.value ؛ // يمكن أن تحصل هذه الخطوة على المسار الكامل للعميل. ما إذا كان الحكم أدناه معقدًا للغاية ، والحكم أدناه معقد للغاية أيضًا. var file = components.classes ["@mozilla.org/file/local؛1"] .CreateInstance (components.Interfaces.nsilocalfile) ؛ Try {// back slashes for windows file.initwithpath (filename.replace (/// g ، "////") ؛ } catch (e) {if ( ALERT ("file" " + filename +" "لا يمكن تحميلها: المسارات النسبية غير مسموح بها. يرجى تقديم مسار مطلق لهذا الملف.") ؛ يعود؛ } if (file.exists () == false) {Alert ("file '" + filename + "' 'not found.") ؛ يعود؛ } إرجاع ملف var ua = navigator.useragent.toLowerCase () ؛ var s ؛ (s = ua.match (/msie ([/d./2010)/))؟ 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 ؛ } آخر إذا (sys.ie> = "7.0") {// ie7 ، ie8 obj.select () ؛ file_url = document.selection.createRange (). text ؛ } آخر إذا (sys.firefox) {// fx // file_url = document.getElementById ("file"). files [0] .getasdataurl () ؛ // المسار الذي تم الحصول عليه هو السلسلة المشفرة المعترف بها بواسطة ff file_url = readfilefirefox (obj) ؛ } آخر إذا (sys.Chrome) {file_url = obj.value ؛ } // ALERT (file_url) ؛ document.getElementById ("text"). innerhtml = "احصل على المسار الكامل لمجال الملف على النحو التالي: onChange = "getvl (this)" />يتم استخدام الرمز أعلاه عادة في IE 6 7 8. تحت IE9 ، document.selection.createRange () ينفي الوصول ، والذي يبدو أنه تم تحسينه.
أخيرًا ، وجد الاختبار أنه في IE9 ، إذا تم التركيز على التحكم في الملف ، فإن document.selection.createRange () يرفض الوصول.
لذلك ، تحتاج فقط إلى إضافة جملة obj.blur () بعد OBJ.Select ().
السابق:
آخر if (sys.ie> = "7.0") {// ie7 ، ie8 obj.select () ؛ obj.blur () ؛ file_url = document.selection.createRange (). text ؛ } // obj = document.getElementById ("file") ؛الطريقة أعلاه (الموصى بها) للحصول على المسار المطلق لملف الإدخال في JS هي كل المحتوى المشترك من قبل المحرر. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.