javaweb上传文件至服务器端,再从服务器端下载文件
时间: 2024-03-13 09:18:51 浏览: 28
要实现JavaWeb上传文件至服务器端,可以使用Apache Commons FileUpload库。以下是一个简单的示例代码:
```
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 检查是否为文件上传表单
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
out.println("请选择上传文件!");
return;
}
// 创建文件上传工厂和解析器
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// 解析上传表单数据
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
// 如果是普通表单字段,输出其名称和值
if (item.isFormField()) {
out.println(item.getFieldName() + ": " + item.getString() + "<br/>");
}
// 如果是文件字段,保存到服务器端的文件夹中
else {
String fileName = item.getName();
String filePath = getServletContext().getRealPath("/") + "uploads/" + fileName;
File file = new File(filePath);
item.write(file);
out.println("文件上传成功!<br/>");
}
}
} catch (Exception e) {
out.println("文件上传失败:" + e.getMessage());
}
}
}
```
上述代码将上传的文件保存到服务器端的Web应用目录下的uploads文件夹中。如果需要下载已上传的文件,可以使用以下代码:
```
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/DownloadServlet")
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取要下载的文件名
String fileName = request.getParameter("fileName");
if (fileName == null || fileName.equals("")) {
response.getWriter().println("文件名不能为空!");
return;
}
// 获取要下载的文件路径
String filePath = getServletContext().getRealPath("/") + "uploads/" + fileName;
File file = new File(filePath);
if (!file.exists()) {
response.getWriter().println("文件不存在!");
return;
}
// 设置响应头,告诉浏览器要下载文件
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
// 读取要下载的文件,写入响应输出流中
FileInputStream fis = new FileInputStream(file);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
fis.close();
os.close();
}
}
```
上述代码将上传的文件保存在Web应用目录下的uploads文件夹中,然后通过请求参数fileName指定要下载的文件名,从uploads文件夹中读取文件并写入响应输出流中,浏览器就可以下载到该文件了。注意,为了安全起见,应该对下载文件的类型和大小进行限制。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)