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 星