如果通过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); } } }
String fileName = (String) request.getAttribute("fileBrowser");
if (fileName != null && fileName.trim().length() > 0) {
File file = new File(fileName);
file.getPath();
}
在Servlet中,或者Actoin中这样子获取。
页面传递过去的只是一个字符串,需要自己另外做处理。
现在因为浏览器安全问题,已经禁止了直接通过input类型为file的路径形式了,现在可以通过流的形式来实现,只需要定义下上传文件类型为“enctype="multipart/form-data”即可:
举例:
如果你alert中能够获得文件的路径的话,说明js是没问题的。问题是你的form和js中好像没有写提交到哪里后台能获得值吗?