“Jsp页面实现文件上传下载类代码”是一个常见的需求,本篇攻略将为大家详细讲解如何实现这一操作。
第1页:文件上传
1. 在前端页面中添加上传文件的表单
首先,在前端页面中添加一个上传文件的表单,用户可以通过该表单上传文件。例如:
<form action="upload.jsp" method="post" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
其中,enctype
属性告诉服务器表单数据的编码类型,multipart/form-data
类型用于上传文件。
2. 编写后端JSP代码处理文件上传
上传文件的操作需要在服务器端进行处理,我们可以编写 upload.jsp
页面来实现该功能。代码如下:
<%@ page import="java.io.*, java.util.*, javax.servlet.*, javax.servlet.http.*" %>
<%
// 上传文件的保存路径
String savePath = getServletContext().getRealPath("/upload");
// 创建文件保存目录
File fileSaveDir = new File(savePath);
if (!fileSaveDir.exists()) {
fileSaveDir.mkdir();
}
// 获取上传的文件
String fileName = "";
String filePath = "";
String contentType = request.getContentType();
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while (totalBytesRead < formDataLength) {
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
String file = new String(dataBytes);
fileName = file.substring(file.indexOf("filename=") + 10);
fileName = fileName.substring(0, fileName.indexOf("\n"));
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.indexOf("\""));
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1, contentType.length());
int pos;
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
filePath = savePath + "\\" + fileName;
FileOutputStream fileOut = new FileOutputStream(filePath);
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
}
// 输出上传成功信息
out.println("<h2>File Uploaded Successfully!</h2>");
out.println("<br>");
out.println("<b>File Name:</b> " + fileName);
out.println("<br>");
out.println("<b>File Path:</b> " + filePath);
%>
该代码主要实现了以下功能:
- 创建文件保存目录;
- 获取上传的文件;
- 将文件保存在服务器上;
- 输出上传文件的相关信息。
3. 运行代码并测试文件上传功能
将上面的代码保存为 upload.jsp
,并将其放置在Web应用程序的根目录下。然后,启动Tomcat服务器,并访问该JSP页面上传文件,在上传成功后将显示上传文件的相关信息。
第2页:文件下载
1. 在前端页面中添加下载链接
在前端页面中添加一个下载链接,用户可以通过该链接下载文件。例如:
<a href="download.jsp?fileName=example.pdf">Download File</a>
其中,链接指向的URL为 download.jsp
,并携带一个参数 fileName
,用于标识要下载的文件名。
2. 编写后端JSP代码处理文件下载
文件下载的操作同样需要在服务器端进行处理,我们可以编写 download.jsp
页面来实现该功能。代码如下:
<%@ page import="java.io.*, javax.servlet.*, javax.servlet.http.*" %>
<%
// 获取要下载的文件名
String fileName = request.getParameter("fileName");
// 设置响应头信息,告诉浏览器该响应是一个文件
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 获取要下载的文件的输入流
InputStream inputStream = new FileInputStream(getServletContext().getRealPath("/upload/" + fileName));
// 创建输出流将文件写入响应中
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
// 关闭输入输出流
inputStream.close();
outputStream.close();
%>
该代码主要实现了以下功能:
- 获取要下载的文件名;
- 设置响应头信息,告诉浏览器该响应是一个文件;
- 从服务器上获取要下载的文件的输入流;
- 创建输出流将文件写入响应中。
3. 运行代码并测试文件下载功能
将上面的代码保存为 download.jsp
,并将其放置在Web应用程序的根目录下。然后,启动Tomcat服务器,并访问前端页面中的下载链接,在下载成功后将下载文件到本地。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Jsp页面实现文件上传下载类代码第1/2页 - Python技术站