千家信息网

Java怎么实现文件上传和下载的功能

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要讲解了"Java怎么实现文件上传和下载的功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java怎么实现文件上传和下载的功能"吧!第一步
千家信息网最后更新 2025年01月18日Java怎么实现文件上传和下载的功能

这篇文章主要讲解了"Java怎么实现文件上传和下载的功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java怎么实现文件上传和下载的功能"吧!

第一步:导包

导入commons-fileupload-1.3.3.jar和commons-io-2.4.jar两个依赖包

第二步:编写前端页面

1、提交页面 index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>   Insert title here   
头像:

2、结果页面 result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here 
xx

第三步:编写上传和下载代码

1、上传图片 fileUpload.java

package cn.yz123123.controller;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import javax.servlet.ServletException;import javax.servlet.annotation.MultipartConfig;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.Part;@WebServlet("/fileUpload")@MultipartConfigpublic class fileUpload extends HttpServlet { private static final long serialVersionUID = 1L;  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //String username = request.getParameter("username"); Part part = request.getPart("img");  //获取文件的真实名称 String header = part.getHeader("content-disposition"); String realName = header.substring(header.indexOf("filename=")+10, header.length()-1);  //获取文件自身流 InputStream inputStream = part.getInputStream();  //获取file真实路径,如果没有则创建 String dir = request.getServletContext().getRealPath("/file/"); File dirFile = new File(dir); //上面只是实例化了一个对象,并没有真正的创建一个文件夹 if (!dirFile.exists()) { dirFile.mkdirs(); }  //创建文件对象,并用流的形式写在相应的文件夹中 File file = new File(dir, realName); FileOutputStream fileOutputStream = new FileOutputStream(file);  byte[] buf = new byte[1024]; int len; while((len=inputStream.read(buf))!=-1) { fileOutputStream.write(buf, 0, len); }  fileOutputStream.close(); inputStream.close();  //以下为测试 request.setAttribute("src", request.getContextPath()+"/file/"+realName); request.setAttribute("filename", realName); request.getRequestDispatcher("/result.jsp").forward(request, response); } }

2、下载图片 fileDownload.java

package cn.yz123123.controller;import java.io.FileInputStream;import java.io.IOException;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(urlPatterns = "/download")public class fileDownload extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String filename = req.getParameter("filename");  //获取文件的真实路径 String filePath = req.getServletContext().getRealPath("/file/"+filename);  FileInputStream fileInputStream = new FileInputStream(filePath);  resp.setCharacterEncoding("UTF-8"); resp.setHeader("Content-Disposition","attachment;filename="+UUID.randomUUID()+filename);  ServletOutputStream outputStream = resp.getOutputStream();  byte[] buf = new byte[1024]; int len;  while((len=fileInputStream.read(buf))!=-1) { outputStream.write(buf, 0, len); } outputStream.close(); fileInputStream.close();  }  @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); }}

感谢各位的阅读,以上就是"Java怎么实现文件上传和下载的功能"的内容了,经过本文的学习后,相信大家对Java怎么实现文件上传和下载的功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0