我希望文件(用户头像图片)能够在myproject/src/webapp/WEB-INF/upload/avatars
上传,而是在C:/WEB-INF/upload/avatars
上传。不幸的是,我无法将位于C:/目录中的这些图片显示到jsp页面。
那么,我的代码有什么问题吗?这种做法也被认为是理想的吗?感谢
String format = null;
String fileName = null;
String userName = userService.getLoggedInUsername();
byte[] bytes = file.getBytes();
// Get file extension
fileName = file.getOriginalFilename();
int index = fileName.lastIndexOf(".");
if(index > 0){
format = fileName.substring(index+1);
format = format.toLowerCase();
}
// Creating the directory to store file
String uploadPath = request.getSession().getServletContext().getInitParameter("file-upload");
File dir = new File(uploadPath);
if (!dir.exists())
dir.mkdirs();
// Create the file on server
String filePath = uploadPath + File.separator + userName + "." + format;
File serverFile = new File(filePath);
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
// Update photo path in db
User user = new User();
user.setUserName(userName);
user.setUserPhotoPath(filePath);
userService.insertPhotoPath(user);
web.xml参数:
<context-param>
<description>Location to store uploaded avatars</description>
<param-name>file-upload</param-name>
<param-value>
/WEB-INF/upload/avatars
</param-value>
</context-param>
答案 0 :(得分:0)
您可能需要使用ServletContext.getRealPath()
将路径映射到应用程序,以便访问应用程序的本地文件夹。
这是因为Web应用程序在Web服务器上的虚拟路径下运行。
有关详细信息,请参阅ServletContext文档页面。