j2ee上传文件 如何获得上传前文件的绝对路径 创建时间 我想获取在本地创建文件的时间 5
文件上传功能是可以了,现在要对文件以它的创建日期在文件夹里排序,可action里取不到上传前的路径,因此无法获取该文件原始的创建时间,目前最根本的问题是获取到上传前的路径...
文件上传功能是可以了,现在要对文件以它的创建日期在文件夹里排序,可action里取不到上传前的路径,因此无法获取该文件原始的创建时间,目前最根本的问题是获取到上传前的路径,希望给点关键性的代码,用actionform \ file.getpath()试了都不行
展开
5个回答
展开全部
<!DOCTYPE html PUBpC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取文件绝对路径</title>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
//FX获取文件路径方法
function readFileFirefox(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e) {
alert('无法访问本地文件,由于浏览器安全设置。为了克服这一点,请按照下列步骤操作:(1)在地址栏输入"about:config";(2) 右键点击并选择 New->Boolean; (3) 输入"signed.applets.codebase_principal_support" (不含引号)作为一个新的首选项的名称;(4) 点击OK并试着重新加载文件');
return;
}
var fileName=fileBrowser.value; //这一步就能得到客户端完整路径。下面的是否判断的太复杂,还有下面得到ie的也很复杂。
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 (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
alert("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");
return;
}
if ( file.exists() == false ) {
alert("File '" + fileName + "' not found.");
return;
}
return file.path;
}
//根据不同浏览器获取路径
function 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().text;
}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.getElementById("text").innerHTML="获取文件域完整路径为:"+file_url;
}
</script>
<h1>JS获取文件域完整路径的方法,兼容不同浏览器</h1>
<div id="text" style="color:#f00;"></div>
<input type="file" id="file" onchange="getvl(this)" />
</body>
</html>
chorme 和 ie 都可以获取到 火狐设置一下也可以
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取文件绝对路径</title>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
//FX获取文件路径方法
function readFileFirefox(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e) {
alert('无法访问本地文件,由于浏览器安全设置。为了克服这一点,请按照下列步骤操作:(1)在地址栏输入"about:config";(2) 右键点击并选择 New->Boolean; (3) 输入"signed.applets.codebase_principal_support" (不含引号)作为一个新的首选项的名称;(4) 点击OK并试着重新加载文件');
return;
}
var fileName=fileBrowser.value; //这一步就能得到客户端完整路径。下面的是否判断的太复杂,还有下面得到ie的也很复杂。
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 (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
alert("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");
return;
}
if ( file.exists() == false ) {
alert("File '" + fileName + "' not found.");
return;
}
return file.path;
}
//根据不同浏览器获取路径
function 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().text;
}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.getElementById("text").innerHTML="获取文件域完整路径为:"+file_url;
}
</script>
<h1>JS获取文件域完整路径的方法,兼容不同浏览器</h1>
<div id="text" style="color:#f00;"></div>
<input type="file" id="file" onchange="getvl(this)" />
</body>
</html>
chorme 和 ie 都可以获取到 火狐设置一下也可以
展开全部
file.getPath();是指用户选择的客户端文件路径,与上传前的路径无关的。你需要取到服务器相对路径。action具体代码如下
UploadForm uploadForm = (UploadForm) form;
FormFile myfile = uploadForm.getMyfile();
byte[] data = myfile.getFileData();
ServletContext application = this.getServlet().getServletContext();
String fileName = myfile.getFileName();
String realPath = application.getRealPath("/temp/");//应用服务器temp的相对路径
FileOutputStream fos = new FileOutputStream(realPath + "/" + fileName);//文件输出流
fos.write(data);//将文件上传至temp目录下
UploadForm uploadForm = (UploadForm) form;
FormFile myfile = uploadForm.getMyfile();
byte[] data = myfile.getFileData();
ServletContext application = this.getServlet().getServletContext();
String fileName = myfile.getFileName();
String realPath = application.getRealPath("/temp/");//应用服务器temp的相对路径
FileOutputStream fos = new FileOutputStream(realPath + "/" + fileName);//文件输出流
fos.write(data);//将文件上传至temp目录下
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议使用 flash控件, 可以参考开心001的文件上传。 因为浏览器权限的问题,不是用控件,获得本地创建时间不好办, 获取本地绝对路径在IE6下可以,但是到了IE8也同样有限制,虽然可以通过IE设置放开,但是操作的是用户,总是比较麻烦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你那是客户端的路径和时间吧。考虑用js获取 路径简单。他上传的时候把file控件里的东西取出来方到别的input里面 hidden的 时间就用js查以下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的类最终是要和JSP、Servlet部署到tomcat下的
所以建议使用相对路径获得文件
这样子对后来的改动和用户的使用没有限制
所以建议使用相对路径获得文件
这样子对后来的改动和用户的使用没有限制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询