在jsp页面中,使用<input type="file"
name="file">在Servlet中只能得到相对路径,却不能得到绝对路径,上网大部分人说是因为浏览器的原因,现在的新版浏览器为了保护,不能得到本地文件的绝对路径。经过本人上网查阅相关资料,得到以下解决办法,仅供参考:
首先,在jsp页面中,将form表单中的enctype属性设置为 "multipart/form-data";
然后,需要添加jar文件,jspsmart.jar文件,用来上传文件,具体代码如下:
//使用SmartUpload将文件传到服务器上
//创建SmartUpload对象
SmartUpload mySmartUpload = new
SmartUpload();
//初始化SmartUpload对象
mySmartUpload.initialize(this.getServletConfig(), request,
response);
//设置允许上传的文件格式
mySmartUpload.setAllowedFilesList("jpg,png");
try {
//上传文件
mySmartUpload.upload();
//将文件保存到服务器上的相应文件夹下(此处使用tomcat服务器,保存到工程下images)
mySmartUpload.save(this.getServletContext().getRealPath("/")+"images/");
} catch (SmartUploadException e) {
e.printStackTrace();
}
//得到上传的文件信息
File myFile =
mySmartUpload.getFiles().getFile(0);
String myFilePathName =
myFile.getFilePathName();
因为在jsp页面中设置了enctype属性,使用request.getParameter()得到的值为null,需用一下代码进行处理:
String gname =
mySmartUpload.getRequest().getParameter("name");
这样就解决了不能得到相对路径的问题。以上言论,仅代表个人观点,如有错误,还请海涵!