java图片上传和显示
时间: 2024-05-06 08:19:40 浏览: 71
Java图片上传和显示可以使用以下步骤:
1. 上传图片:使用Java的文件上传API(如Apache Commons FileUpload)上传图片文件到服务器上的指定目录。具体实现可以参考以下代码:
```java
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取上传文件的保存目录
String savePath = getServletContext().getRealPath("/upload");
// 判断目录是否存在,若不存在则创建目录
File file = new File(savePath);
if (!file.exists() && !file.isDirectory()) {
System.out.println(savePath + "目录不存在,需要创建");
file.mkdir();
}
// 设置上传文件的大小限制
int maxSize = 5 * 1024 * 1024; // 最大5MB
// 创建文件上传处理器
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096); // 设置缓冲区大小
factory.setRepository(new File(savePath)); // 设置缓存目录
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(maxSize); // 设置上传文件的大小限制
try {
// 解析请求中的上传文件
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) { // 普通表单域
String fieldName = item.getFieldName();
String fieldValue = item.getString("UTF-8");
System.out.println(fieldName + "=" + fieldValue);
} else { // 上传文件
String fileName = item.getName(); // 获取上传文件的文件名
if (fileName != null && !"".equals(fileName)) {
System.out.println("上传的文件名为:" + fileName);
File uploadFile = new File(savePath + "/" + fileName);
item.write(uploadFile); // 保存上传文件到指定目录
}
}
}
request.setAttribute("message", "上传成功!");
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("message", "上传失败:" + e.getMessage());
}
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
```
2. 显示图片:使用Java的Servlet将图片文件读取并输出到浏览器。具体实现可以参考以下代码:
```java
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取图片文件的路径
String imagePath = getServletContext().getRealPath("/upload/test.jpg");
// 读取图片文件并输出到浏览器
FileInputStream fis = new FileInputStream(imagePath);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
response.getOutputStream().write(buffer, 0, len);
}
fis.close();
}
```
以上代码中的"/upload/test.jpg"为图片文件的相对路径,可以根据实际情况进行修改。此外,还需要在web.xml中配置Servlet映射,使其可以被访问到:
```xml
<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>com.example.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/image</url-pattern>
</servlet-mapping>
```
其中,"/image"为Servlet的访问路径,可以根据实际情况进行修改。最后,在HTML页面中可以使用<img>标签来显示图片:
```html
<img src="image" alt="test">
```
阅读全文