我对以下情况有点失落:
不幸的是display.jsp页面是空的。当我在firefox下查看源页面时,一切似乎都很好,提供了有效的图像链接。
<img src="/UploadTest/avatar/55_445194458350473498.png" border=0 width="48px" height="48px"/>
但是在媒体信息下我可以看到一些奇怪的信息:
Location: http://localhost:8084/UploadTest/avatar/55_445194458350473498.png
Type: text/html
Size: Unknown (not cached)
Dimensions: 0px x 0px (scaled to 0px x 16px)
以下是用于上传,处理和显示图片的代码:
upload.jsp
<form action="Upload" method="post" enctype="multipart/form-data">
<label for="file">File:</label>
<input type="file" id="file" name="file">
<input type="submit" value="submit">
</form>
Upload.java
(MultipartMap servlet属于BalusC,http://balusc.blogspot.com.au/2009/12/uploading-files-in-servlet-30.html)
package test;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import test.MultipartMap;
@WebServlet(urlPatterns = { "/Users/Thomas/NetBeansProjects/UploadTest/web/Upload" })
@MultipartConfig(location = "/Users/Thomas/NetBeansProjects/UploadTest/web/avatar", maxFileSize = 10485760L) // 10MB.
public class UploadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
MultipartMap map = new MultipartMap(request, this);
File file = map.getFile("file");
String filename = file.getName();
HttpSession session = request.getSession();
session.setAttribute("filename", filename);
request.getRequestDispatcher("/display.jsp").forward(request, response);
}
}
display.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<div>
<img src="${pageContext.request.contextPath}/avatar/${filename}" border=0 width="48px" height="48px"/>
<div>
</body>
</html>
如果我在display.jsp,$ {filename}中替换之前上传的特定图像的静态名称,那么显示没有问题,所以我认为图像处理正确只是前方缺少某些内容?
顺便说一下:当调试器处于活动状态时,一切正常,但是当关闭时问题又回来了。
干杯,
托马斯
答案 0 :(得分:0)
很好的解释。我解决了你的问题并创建了它的样本。我遇到同样的问题。 解决方案是放在display.jsp文件中的下面行:
<%@page isELIgnored="false" %>
我认为EL和页面的问题无法正确评估。 以下是代码: upload.jsp和upload.java与你的相同。
display.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<div>
<img src="${pageContext.request.contextPath}/images/${filename}" border=0 width="48px" height="48px" alt="Image Not found"/>
<div>
</body>
</html>
希望这对你也有用
谢谢
答案 1 :(得分:-1)
您可以在pic查看器中查看上传的图像吗?
文件大小是否正确且数据未损坏?
您的服务器是否在端口8084上运行?
我想知道为什么你应该是image / png时输入text / html。