java实现文件的上传下载
时间: 2023-11-29 20:07:14 浏览: 34
Java 实现文件上传下载可以使用 Servlet 和 JSP 技术。
文件上传:
1. 在 JSP 页面中添加一个表单,用于上传文件:
```html
<form action="FileUploadServlet" 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();
InputStream inputStream = filePart.getInputStream();
// 将文件保存到服务器
File file = new File(getServletContext().getRealPath("/uploads"), fileName);
OutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
// 返回上传成功的消息
response.getWriter().println("文件上传成功!");
}
```
其中,Part 类是 Servlet 3.0 新增的类,用于处理文件上传。getSubmittedFileName() 方法可以获取上传的文件名,getInputStream() 方法可以获取上传的文件流。将上传的文件保存到服务器的代码中,我们使用了 getServletContext().getRealPath() 方法获取服务器上的路径,FileOutputStream 用于写入文件。
文件下载:
1. 在 JSP 页面中添加链接,用于下载文件:
```html
<a href="FileDownloadServlet?fileName=example.txt">下载文件</a>
```
2. 在 Servlet 中处理文件下载请求:
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取要下载的文件名
String fileName = request.getParameter("fileName");
// 获取要下载的文件
File file = new File(getServletContext().getRealPath("/uploads"), fileName);
// 设置响应头,告诉浏览器要下载文件
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 将文件写入响应流
InputStream 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);
}
outputStream.close();
inputStream.close();
}
```
其中,request.getParameter() 方法用于获取 URL 参数,response.setContentType() 方法用于设置响应的 MIME 类型,response.setHeader() 方法用于设置响应头,告诉浏览器要下载文件。将文件写入响应流的代码中,我们使用了 FileInputStream 用于读取文件,response.getOutputStream() 用于将文件写入响应流。
以上就是 Java 实现文件上传下载的方法。