java或js(可用jquery)如何获取上传文件原始路径名?

问题描述

上传文件时,我想获取客户端上传文件的原始路径。第一考虑,当然是使用js,例如网上可以找到的: 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; } } 但这样的代码在Ie下还是可行的,但在火狐下不兼容。所以又想通过servlet的第三方工具去做,例如FileUpload,本以为FileItem下的getName()方法能够得到全路径名,但结果仍然只得到文件名,很是杯具!求解决方法!? 问题补充:zhanjia 写道

解决方案

引用我用来做数据接口的,我仅仅是把路径传给另一个系统,然后那个系统就可以从这个路径取文件了。如果先上传一次,再给对方,这样不但影响上传速度,而且会产生大量的垃圾文件。 那你应该将上传后文件在服务器的位置发给另一个系统假如在你本机上传文件D:/file.txt,然后把D:/file.txt发给另一个系统,那是没意义的
解决方案二:
引用上传文件时,我想获取客户端上传文件的原始路径真有必要这个需求?一般都是上传以后在数据库中保存上传后的文件路径,本地路径一般没意义除非像上面所说的文件上传预览,还有那么点用处
解决方案三:
firefox在访问的时候会有安全提示ie中浏览器--internt选项--安全---internet----自定义设置----- 里面 将文件上传到服务器时包含本地目录路径 选择 启用,则上传的包含有路径,如果禁用,就不包含路径
解决方案四:
网上的一些解决方案:<html><head> <title>JS获取上传文件的绝对路径,兼容IE和FF</title> <script type="text/javascript">function readFile(fileBrowser) { if (navigator.userAgent.indexOf("MSIE")!=-1) readFileIE(fileBrowser); else if (navigator.userAgent.indexOf("Firefox")!=-1 || navigator.userAgent.indexOf("Mozilla")!=-1) readFileFirefox(fileBrowser); else alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");}function readFileFirefox(fileBrowser) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch (e) { alert('路径错误!'); return; } var fileName=fileBrowser.value; var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); try { file.initWithPath( fileName.replace(///g, "\\") ); } catch(e) { if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e; return; } if ( file.exists() == false ) { alert("File '" + fileName + "' not found."); return; } alert(file.path);}function readFileIE(fileBrowser) { alert(document.getElementById("fileBrowser").value);} </script></head><body> <form name="form1"> <input type="file" name="fileBrowser" size="50" onchange="readFile(this)" /> </form></body></html>预览图片:<html><head><title>get file input full path</title><script language='javascript'>function getFullPath(obj) {if (obj) {var image = new Image();// ieif (window.navigator.userAgent.indexOf("MSIE") >= 1) {obj.select();image.src = document.selection.createRange().text;return document.selection.createRange().text;}// firefoxelse if (window.navigator.userAgent.indexOf("Firefox") >= 1) {if (obj.files) {image.src = obj.files.item(0).getAsDataURL();return obj.files.item(0).getAsDataURL();}return obj.value;}return obj.value;}}</script></head><body><input type="file" onchange="document.getElementById('img').src=getFullPath(this);" /><img id="img" /></body>都是不完全解决方案
解决方案五:
高版本的浏览器出于安全考虑,不允许JS访问上传文件的路径,只能取得文件名
解决方案六:
上传文件一般用input标签,type为file,浏览选择文件后就是文件在本地的绝对路径了引用<input type="file" name="file" />至于你说的,不明白你的意思
解决方案七:
没有办法了 在ie6应该可以 版本高了也都不行了 为了对用户隐私的包含这些信息都不会显示了

时间: 2016-01-29
Tags: Web综合

java或js(可用jquery)如何获取上传文件原始路径名?的相关文章

js获取上传文件的绝对路径实现方法_javascript技巧

在html中 <input type="file" id="importFile" /> <input type="button" onclick="upload()"/> <script> function upload() { var filename = document.getElementById("importFile").value; // 这时的filen

jQuery Ajax方式上传文件的方法_AJAX相关

jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 FormData 对象,还在用IE6 ? 只能仰天长叹.... 有了这两个对象,我们可以真正的实现Ajax方式上传文件. 示例代码: <!DOCTYPE html> <html> <head> <title>Html5 Ajax 上传

基于jQuery Ajax实现上传文件_jquery

本文实例为大家分享了基于jQuery Ajax实现上传文件的关键代码,供大家参考,具体内容如下 JS代码: //保存 function btnAdd() { var formData = new FormData($("#frm")[0]); $.ajax({ url: "/Admin/ContentManage/SaveEdit", type: "POST", data: formData, contentType: false, //必须fa

Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件_实用技巧

0 ajaxFileUpload简介  ajaxFileUpload插件是一个非常简单的基于Jquery的异步上传文件的插件,使用过程中发现很多与这个同名的,基于原始版本基础之上修改过的插件,文件版本比较多,我把我自己使用的ajaxFileUpload文件上传到博客园上了,想要使用的朋友可以下载:http://xiazai.jb51.net/201611/yuanma/ajaxfileupload(jb51.net).rar.  整个插件源码不到200行,实现非常简单,大致原理就是通过js动态创

jQuery Ajax方式上传文件的方法

jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 FormData 对象,还在用IE6 ? 只能仰天长叹.... 有了这两个对象,我们可以真正的实现Ajax方式上传文件. 示例代码: <!DOCTYPE html> <html> <head> <title>Html5 Ajax 上传

javascript-js 获取上传文件的绝对路径

问题描述 js 获取上传文件的绝对路径 各位,用标签上传文件,想要获取上传文件的绝对路径 不知道怎样获取 麻烦告知 感激不尽 解决方案 不是所有的浏览器都会报告绝对路径.如果浏览器不报告,不允许js访问,没有办法获得. 如果限定ie,特定的版本,可以用fso或者自己写activex 解决方案二: 浏览器安全问题,ie7+需要配置过安全才会返回实际路径,其他浏览器不行.而且你获取客户端路径也没什么意义..除非是黑客.. 解决方案三: 在html中 ???? ???? function?upload

PHP使用APC获取上传文件进度

今天发现使用PHP的APC也能获取上传文件的进度.这篇文章就说下如何做. 安装APC 首先安装APC的方法和其他PHP模块的方法没什么两样,网上能找出好多 phpinfo可以看到APC的默认配置有: apc.rfc1867 看apc.rfc1867这个配置项: http://cn2.php.net/manual/en/apc.configuration.php#ini.apc.rfc1867   文档说的是如果你上传文件的时候,在POST中带有APC_UPLOAD_PROGRESS字段,那么AP

activexobject-ActiveXObject获取上传文件的二进制流

问题描述 ActiveXObject获取上传文件的二进制流 支持W3C File的浏览器,都可以使用FileReader对象获取上传文件的二进制流. 但是IE不支持,IE11都不支持. @showbo 感谢大虾帮我解决了问题.但是IE是个头疼的问题. 再次请教各位大虾,有什么能让IE获取上传文件二进制流的方法么? 不能使用flash,因为面向的用户特殊,他们基本不会电脑,更别说安装flash. IE获取不到ActiveXObject对象,我可以写bat文件,让用户下载后执行bat后再进行上传文件

SmartUpload组件获取上传文件路径出错

问题描述 今天我在使用上传组件SmartUpload上传文件时 获取文件上传路径是null这是表单中的代码: 照片:<input type="file" name="ufile"><br/>这是提交页的代码:String file1=smart.getRequest().getParameter("ufile"); 输出file1里面的值是null我应该如何的 获取上传文件的路径 把它存入数据库当中 (数据库当中存放的是图