使用jsp写一个文件上传和下载不限文件
时间: 2024-03-18 10:40:31 浏览: 17
好的,下面是一个使用 JSP 实现文件上传和下载的示例代码:
文件上传:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<%@ page import="javax.servlet.*,javax.servlet.http.*" %>
<%
// 设置上传文件的保存路径
String savePath = getServletContext().getRealPath("/") + "uploads";
File fileSaveDir = new File(savePath);
if (!fileSaveDir.exists()) {
fileSaveDir.mkdir();
}
// 处理上传文件
String fileName = "", filePath = "";
for (Part part : request.getParts()) {
fileName = extractFileName(part);
filePath = savePath + File.separator + fileName;
part.write(filePath);
}
out.println("文件上传成功!");
// 获取文件名
private String extractFileName(Part part) {
String contentDisposition = part.getHeader("content-disposition");
String[] items = contentDisposition.split(";");
for (String item : items) {
if (item.trim().startsWith("filename")) {
return item.substring(item.indexOf("=") + 2, item.length() - 1);
}
}
return "";
}
%>
```
文件下载:
```jsp
<%@ page language="java" contentType="application/octet-stream"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,javax.servlet.*,javax.servlet.http.*" %>
<%
String fileName = request.getParameter("file");
String filePath = getServletContext().getRealPath("/") + "uploads" + File.separator + fileName;
File file = new File(filePath);
if (file.exists()) {
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.setContentType("application/octet-stream");
FileInputStream inputStream = new FileInputStream(file);
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();
} else {
out.println("文件不存在!");
}
%>
```
注意:这只是一个简单的示例,实际应用中还需要做一些错误处理和安全性检查。