idea图片从服务器获取失败问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <%@page import="com.imooc.domain.User"%> <%@page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >登录成功</ title > < link rel = "stylesheet" href = "./css/login.css" > </ head > < body > < div class = "login" > <% String username=""; // 如果当前用户登录成功 if (session.getAttribute("user")!=null){ User u= (User) session.getAttribute("user"); username=u.getUsername(); //获取用户头像(默认发布在out文件下,不能直接访问)路径,这个路径只是为了获取文件名,并不能直接访问 String path=u.getPath(); //获取头像唯一文件名 String flieName=path.substring(path.lastIndexOf("\\")+1); // 如果页面在服务器上,浏览器出于安全考虑是不允许html访问本地文件的。 // 不会允许浏览器打开file:开头的本地图片的。 // 所以这里我们需要使用bashPath/upload/fileName来访问图片 // 获取上下文路径即项目名 String path1=request.getContextPath(); //获取文件上传到服务器上的路径 String basepath=request.getScheme()+"://"+request.getServerName()+":"+ request.getServerPort()+path1+"/"; System.out.println(basepath); %> < div class = "header" > < h1 >登录成功</ h1 > </ div > < div class = "content" > < table align = "center" > < tr > < td align = "center" >< img src="<%=basepath%>/upload/<%=flieName%>"/></ td > </ tr > < tr > < td align = "center" >欢迎<%=username%>,登录成功!</ td > </ tr > </ table > </ div > <% } else { %> <%--如果用户没有登录则提示用户登录--%> < div class = "header" > < h1 >你还没有登录,请< a href = "/reg_login/login.jsp" >登录</ a ></ h1 > </ div > <% } %> </ div > </ body > </ html > |
图片是上传到了out下的目录,如下图
在success.jsp获取图片时,是按照一位老师的方法写的路径,但是登录成功后图片不显示
// 获取上下文路径即项目名
String path1=request.getContextPath();
//获取文件上传到服务器上的路径
String basepath=request.getScheme()+"://"+request.getServerName()+":"+
request.getServerPort()+path1+"/";
User u= (User) session.getAttribute("user");
username=u.getUsername();
//获取用户头像(默认发布在out文件下,不能直接访问)路径,这个路径只是为了获取文件名,并不能直接访问
String path=u.getPath();
//获取头像唯一文件名
String flieName=path.substring(path.lastIndexOf("\\")+1);
我的路径是<%=basepath%>/upload/<%=fileName%>
关键是输入http://localhost:8080/reg_login/upload/fileName都不显示图片的,而且通过电脑文件夹本地访问out/.../upload下的图片都不显示。
正在回答
你好!看你的代码图片是上传成功了,我把你的代码改了一下,测试没有问题,你可以用我的代码测试一下,把String path="upload\\tushu.jpeg";这条语句中的path改成你的路径就可以,可以是相对路径,也可以是本地的绝对路径。然后看一下输出结果。也可以现在你当前的代码中调试,在浏览器运行,按F12,看浏览器的Console有什么错误提示,根据提示寻找线索,也可以截图贴出来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <%@page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >登录成功</ title > < link rel = "stylesheet" href = "./css/login.css" > </ head > < body > < div class = "login" > <% String username=""; // 如果当前用户登录成功 // if (session.getAttribute("user")!=null){ //User u= (User) session.getAttribute("user"); //username=u.getUsername(); //获取用户头像(默认发布在out文件下,不能直接访问)路径,这个路径只是为了获取文件名,并不能直接访问 //String path=u.getPath(); String path="upload\\tushu.jpeg"; //获取头像唯一文件名 String flieName=path.substring(path.lastIndexOf("\\")+1); System.out.println("filiName:"+flieName); // 如果页面在服务器上,浏览器出于安全考虑是不允许html访问本地文件的。 // 不会允许浏览器打开file:开头的本地图片的。 // 所以这里我们需要使用bashPath/upload/fileName来访问图片 // 获取上下文路径即项目名 String path1=request.getContextPath(); //获取文件上传到服务器上的路径 String basepath=request.getScheme()+"://"+request.getServerName()+":"+ request.getServerPort()+path1+"/"; System.out.println(basepath); %> < div class = "header" > < h1 >登录成功</ h1 > </ div > < div class = "content" > < table align = "center" > < tr > < td align = "center" >< img src="<%=basepath%>/upload/<%=flieName%>"/></ td > </ tr > < tr > < td align = "center" >欢迎<%=username%>,登录成功!</ td > </ tr > </ table > </ div > </ div > </ body > </ html > |
祝学习愉快!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | String fileName=fileItem.getName(); if (fileName!= null &&! "" .equals(fileName)) { String uuidFileName = FileUtil.getUUIDFileName(fileName); //获取文件输入流 InputStream inputStream = fileItem.getInputStream(); //获取要往里输出数据的文件路径,往哪儿输出 String path = this .getServletContext().getRealPath( "/upload" ); //构建文件的url url = path + "\\" + uuidFileName; //创建输出流 OutputStream outputStream = new FileOutputStream(url); int len = 0 ; byte [] bytes = new byte [ 1024 ]; //写入文件到upload文件夹下 while ((len = inputStream.read()) != - 1 ) { outputStream.write(bytes, 0 , len); } inputStream.close(); outputStream.close(); } } |
这是文件上传的代码
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧