文件绝对路径上传到后台
在做这一部分的时候我也费了很长一段时间去查找资料,发现很多的方法都不能直接获取文件的绝对路径。最后发现,大部分浏览器为了安全起见,都设置了拒绝文件绝对路径获取。如果要求用户在应用软件时候还设置浏览器权限的话,体验感会很差。因此,这里写了一些方法,针对部分浏览器应用。
//根据不同浏览器获取路径
function getvl(obj){
//判断浏览器
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/rv:([\d.]+)\) like gecko/)) ? 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 check_it = -1;
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 = obj.value;
//file_url = document.selection.createRange().text;11版本的也支持obj.value.
}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;
}
if(check_it==-1){
$.messager.confirm('确认框','你确定导入这个文件吗?',function(r){
if (r){
$.get("examServlet?task=D_address"
,{"Dem":file_url},function(msg){
//alert(msg);
//刷新页面,reload重新加载上面url:'userServlet'里面的数据
$("#dg").datagrid("reload");
}
);
}
});
}
//document.getElementById("text").innerHTML="获取文件域完整路径为:"+file_url;
document.getElementById('text').value = '';
update_it=2;
}
在后台获取的时候可以利用GET和POST方法来获取
private void document_a(HttpServletRequest request, HttpServletResponse response) throws Exception{
file_D = request.getParameter("Dem");
//返回前端获取的地址
}