@RequestMapping(value = "h5_upload", method = RequestMethod.POST)
public void upload(@RequestParam MultipartFile[] files, HttpServletRequest request, HttpServletResponse response) {
try {
MultipartFile file = files[0];
//String showPic = request.getSession().getServletContext().getRealPath("/upload/") + file.getOriginalFilename();
String noShowPic = request.getSession().getServletContext().getRealPath("/upload/"+file.getOriginalFilename()) ;
//System.out.println(showPic);
System.out.println(noShowPic);
File saveFile = new File(noShowPic);
file.transferTo(saveFile);
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write(request.getSession().getServletContext().getContextPath()+"/upload/"+file.getOriginalFilename());
} catch (IOException e) {
e.printStackTrace();
}
}
这段代码是文件上传的,主要功能就是上传一张图片保存到服务器,然后返回地址,前台显示
目前遇到一个问题
String showPic = request.getSession().getServletContext().getRealPath("/upload/") + file.getOriginalFilename(); 代码是这样的时候,图片上传以后可以及时预览的
但是如果执行这段
String noShowPic = request.getSession().getServletContext().getRealPath("/upload/"+file.getOriginalFilename()) ;
前台就没办法预览了,我将showPic和noShowPic 两个字符串打印出来,发现是相同的连接,那这个是什么问题导致的???
代码去的内容是相同的、值当然一样了
file.getOriginalFilename()
调试输出下
怀疑这个字符串开头有个 /。所以
request.getSession().getServletContext().getRealPath("/upload/")
返回的结果最后没有斜杠,正好拼接上了,下面的就多了一个斜杠。