java web项目java后台获取前台js上传文件的路径

<scripttype="text/javascript">functionreadFile(fileBrowser){if(navigator.userAgent.in... <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;
}
if(extend=="xls"){
alert(file.path);
} else{
alert(file1.path);
}
function readFileIE(fileBrowser) {
alert(document.getElementById("fileBrowser").value);
}
</script>
<div style="margin:0px auto; text-align:center;">
<form name="form1">
<input type="file" name="fileBrowser" size="50" onchange="readFile(this)" />
</form>
</div>
为什么java后台通过String text2 = file.getPath();无法获取路径
展开
 我来答
勒布榔詹姆斯
2013-12-23 · TA获得超过349个赞
知道答主
回答量:71
采纳率:0%
帮助的人:50万
展开全部

如果通过servelet来读取上传文件路径,则代码如下,我已经在项目中用过了:

DiskFileItemFactory difif = new DiskFileItemFactory();
difif.setSizeThreshold(32*1024);difif.setRepository(new File(tmpDir));        //
用以上工厂实例化上传组件ServletFileUpload sfu = new ServletFileUpload(difif);
sfu.setSizeMax(MAX_SIZE);
List fileList = sfu.parseRequest(request);
if ( fileList == null || fileList.size() == 0) {                throw new Exception("
导入文件不存在,请检
查");} else {                File upLoadFile = null;                Iterator fileIterator = fileList.iterator();
//得到所有上传的文
件                while (fileIterator.hasNext()) {                    FileItem fileItem = (FileItem)fileIterator.next();                    //
取得上传文件
名                    if (fileItem.getContentType() == null) {                    } else {
                        //
此为路
径                        String path = fileItem.getName();                        String t_ext = path.substring(path.lastIndexOf(".") + 1);                                                //
根据系统时间生成上传后保存的文件
名                        String prefix = String.valueOf(System.currentTimeMillis());                        //
保存最终的文件完整路径,保存在工程根目录下的Upload目录
下                        String u_name = tmpDir + File.separator + prefix + "." + t_ext;                                                //
开始保存文
件                        upLoadFile = new File(u_name);                        fileItem.write(upLoadFile);                    }                }            }
百度网友21647e5fc
推荐于2017-09-21 · TA获得超过709个赞
知道小有建树答主
回答量:149
采纳率:100%
帮助的人:141万
展开全部
		String fileName = (String) request.getAttribute("fileBrowser");
if (fileName != null && fileName.trim().length() > 0) {
File file = new File(fileName);
file.getPath();
}

在Servlet中,或者Actoin中这样子获取。

页面传递过去的只是一个字符串,需要自己另外做处理。
追问
你好,我用Updates是无法把路径提交到Action中的吧
追答
不能的,你要使用Form表单,并且用submit提交才可以,

还有一种方法就是你使用Ajax进行提交。

----
更新
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2017-10-14 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1661万
展开全部
现在因为浏览器安全问题,已经禁止了直接通过input类型为file的路径形式了,现在可以通过流的形式来实现,只需要定义下上传文件类型为“enctype="multipart/form-data”即可:
举例:
<form id='modify1' name="modify1" method="post" enctype="multipart/form-data" action="${ctx}/report/rate_exchange.jsp" >
<table class="table_common" id="table1" cellspacing="1" cellpadding="0">
<tr class='title_tr' >
<td style="white-space: nowrap; text-align: center;" colspan="4">
<input type="file" name="fileName" id="filePath">
<input type="button" style="white-space: nowrap; text-align: center;" class="List_Button2" value="<BOC:I18N name="submit"/>" onclick="submitForm1()" />
<input type="reset" style="white-space: nowrap; text-align: center;" class="List_Button2" value="<BOC:I18N name="reset"/>" onclick='confirm("你确认要取消本次上传吗?")'/>
</td>
</tr>
</table>
</form>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-23
展开全部
如果你alert中能够获得文件的路径的话,说明js是没问题的。问题是你的form和js中好像没有写提交到哪里后台能获得值吗?
追问
我用

更新

提交到Action
追答
你把readFile(this)写到链接中试试吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式