idea图片从服务器获取失败问题
<%@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有什么错误提示,根据提示寻找线索,也可以截图贴出来
<%@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>
祝学习愉快!
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积分~
来为老师/同学的回答评分吧
0 星