javaweb文件上传下载
时间: 2023-08-29 14:12:50 浏览: 50
JavaWeb 的文件上传和下载可以通过 Servlet 和 JSP 来实现,具体步骤如下:
文件上传:
1. 在表单中添加一个文件上传的 input 标签,并设置 enctype 为 "multipart/form-data"。
```html
<form action="uploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
```
2. 在 Servlet 中获取上传的文件并保存到服务器指定的目录中。
```java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取上传的文件
Part filePart = request.getPart("file");
// 获取上传文件的名称
String fileName = filePart.getSubmittedFileName();
// 获取保存文件的路径
String savePath = request.getServletContext().getRealPath("/upload");
// 创建保存文件的目录
File saveDir = new File(savePath);
if (!saveDir.exists()) {
saveDir.mkdirs();
}
// 将文件保存到指定目录
filePart.write(savePath + File.separator + fileName);
}
```
文件下载:
1. 在 JSP 页面中添加一个下载链接,其中 href 属性指向 Servlet,并传递文件名参数。
```html
<a href="downloadServlet?fileName=test.pdf">下载</a>
```
2. 在 Servlet 中获取传递的文件名参数,并将文件输出到浏览器。
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取要下载的文件名
String fileName = request.getParameter("fileName");
// 获取要下载的文件的路径
String filePath = request.getServletContext().getRealPath("/upload/" + fileName);
// 设置响应头,让浏览器下载文件
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 将文件写入到响应输出流中
InputStream in = new FileInputStream(filePath);
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
in.close();
out.close();
}
```
以上就是 JavaWeb 文件上传和下载的基本实现方式,可以根据实际需要进行适当的调整和扩展。