2 zjf1990 zjf1990 于 2016.02.08 15:25 提问

getServletContext().getRealPath

@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 两个字符串打印出来,发现是相同的连接,那这个是什么问题导致的???

2个回答

Yiran8935
Yiran8935   2016.02.08 15:51

代码去的内容是相同的、值当然一样了

zjf1990
zjf1990 我问的是值一样,为什么一个可以正常预览一个不行
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.09 07:37

file.getOriginalFilename()
调试输出下

怀疑这个字符串开头有个 /。所以
request.getSession().getServletContext().getRealPath("/upload/")
返回的结果最后没有斜杠,正好拼接上了,下面的就多了一个斜杠。

zjf1990
zjf1990 目前确认的问题可能是TOMCAT问题 测试了TOMCAT6 7 8 9 其中6 7正常 8 9都有问题,但什么原因还不知道
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!