JavaWeb实现前端从服务器下载图片和前端上传文件到服务器

本文介绍了如何在Eclipse中与Apache Tomcat集成,包括创建名为ShowDownloadWebServers的项目。内容涵盖了前端展示图片的ShowImg.java,文件上传的Upload.java,以及文件下载的Download.java。通过实例展示了如何使用Servlets处理HTTP请求,实现图片显示和文件上传下载功能。
摘要由CSDN通过智能技术生成

环境:Eclipse,Apache tomcat
Tomcat与Eclipse集成:
https://blog.csdn.net/qq_41635282/article/details/112252764

文件说明

index.html:前端页面
ShowImg.java:从服务器上返回一张图片显示在页面上。
Upload.java:处理上传的文件存储到服务器上指定的位置。
Download.java:从服务器上下载文件到本地。

创建一个javaweb项目

我的项目名叫:ShowDownloadWebServers
在这里插入图片描述

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
div {
	border: 2px solid black;
}
</style>
</head>
<body>
	<div>
		<p>点击按钮,从服务器上返回一张图片</p>
		<form action="show">
			<p>
				<input type="submit" value="查看图片">
			</p>
		</form>
	</div>
	<br>
	<div>
		<p>上传:将文件传到服务器上</p>
		<form action="upload" method="post" enctype="multipart/form-data">
			<p>
				<input type="file" name="file">
			</p>
			<p>
				<input type="submit" value="上传到服务器">
			</p>
		</form>
	</div>
	<br>
	<div>
		<p>点击从服务器上下载个图片</p>
		<p>
			<img alt="" width="200" height="200" name="img1"
				src="http://localhost:8080/ShowDownloadWebServers/img/2.jpg">
		</p>
		<p>
			<a href="download?name=2.jpg">下载图片</a>
		</p>
	</div>
</body>
</html>

在这里插入图片描述
注意事项:
在这里插入图片描述
在这里插入图片描述

ShowImg.java

package com.bingjiu.back;

import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * 显示图片img/1.jpg
 */
@WebServlet("/show")
public class ShowImg extends HttpServlet{
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//设置响应头Content-Type为图片类型
		resp.setHeader("Content-Type","image/jpg" );
		//Servlet自带的输出流
		ServletOutputStream os=resp.getOutputStream();
		//将图片输入到内存
		InputStream is=req.getServletContext().getResourceAsStream("img/1.jpg");
		byte[] data=new byte[1024];
		int len=0;
		//输出到页面打印
		while((len=is.read(data))!=-1) {
			os.write(data,0,len);
		}
		
		//关闭流
		os.close();
		is.close();
		
	}
}

注意事项:
在这里插入图片描述

Upload.java

package com.bingjiu.back;


import java.io.File;
import java.io.IOException;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;


/*
 * 上传到服务器
 */
@WebServlet("/upload")
@MultipartConfig
public class Upload extends HttpServlet{
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//解决网页乱码
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		//获取part对象
		Part part = req.getPart("file");
		
		//通过请求头content-disposition获取请求头信息
		String header = part.getHeader("content-disposition");
		System.out.println(header);
		//从请求头信息种截取文件名,header.lastIndexOf("=")获取‘=’最后出现的位置
		String filename = header.substring(header.lastIndexOf("=")+2, header.length()-1);
		System.out.println(filename);
		//确定上传路径
		String path="C:/Users/BetelNutsAndWine/Desktop/WenJian";
		//创建指向路径的File对象
		File file = new File(path);
		//file.exists()文件(文件夹或文件路径正确)存在返回true,不存在返回false
		if(!file.exists()) {
			//创建文件夹,把路径中不存在的路径一下创建
			file.mkdirs();
		}
		//文件上传
		part.write(path+"/"+UUID.randomUUID()+filename);
	}
	
}

注意事项:
在这里插入图片描述

在这里插入图片描述

Download.java

package com.bingjiu.back;

import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/download")
public class Download extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 获取下载页面发送的下载文件名
		String filename = req.getParameter("name");
		// 设置消息头
		resp.setHeader("content-disposition", "attachment;filename=" + filename);
		// 获取输入流
		InputStream is = req.getServletContext().getResourceAsStream("img/" + filename);
		// 输出流
		ServletOutputStream os = resp.getOutputStream();
		// 读写过程
		byte[] by = new byte[1024];
		int len = 0;
		while ((len = is.read(by)) != -1) {
			os.write(by, 0, len);
		}
		os.close();
		is.close();
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值