全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaWeb中上传和下载文件实例代码

一丶先引入上传下载的lib

二丶上传的的servlet

package com.test.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/upload")
public class FileUpLoadAction extends HttpServlet {
  private static final long serialVersionUID = 1L;
  protected void doPost(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
    // 设置编码
    request.setCharacterEncoding("utf-8"); 
    //对提交的数据进行处理,保存上传文件 
    boolean success = processUpload(request);
    if(success){
      //获取表单text控件的值
      String account = request.getAttribute("account").toString();
      System.out.println(account);
      //获取文件上传的原始名称
      String fileName = request.getAttribute("upfile").toString();
      System.out.println(fileName);
      //获取文件上传后,服务器上保存的名字
      String fileNameServer = request.getAttribute("upfileServer").toString();
      System.out.println(fileNameServer);
      request.setAttribute("upfile", fileNameServer);
      request.setAttribute("message", "上传成功");
    }
    request.getRequestDispatcher("/upload.jsp").forward(request, response);
  }
  private boolean processUpload(HttpServletRequest request) {
    boolean success = true;
    String message = null;
    // 获取文件需要上传到的路径
    String path = request.getServletContext().getRealPath("/upload");
    System.out.println(path);
    // 如果此文件夹不存在,则构造此文件夹
    File f = new File(path);
    if (!f.exists()) {
      f.mkdir();
    }
    // 构造出文件工厂,用于存放JSP页面中传递过来的文件
    DiskFileItemFactory factory = new DiskFileItemFactory();
    // 设置上传文件的保存路径
    factory.setRepository(f);
    // 设置缓存大小,如果文件大于缓存大小时,则先把文件放到缓存中
    factory.setSizeThreshold(1 * 1024 * 1024);
    ServletFileUpload upload = new ServletFileUpload(factory);
    // 设置可以上传文件大小的上界20MB
    upload.setSizeMax(20 * 1024 * 1024);
    try {
      // 可以上传多个文件
      List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
      for (FileItem item : list) {
        // 获取表单的属性名字
        String name = item.getFieldName();
        if (item.isFormField()) {
          String value = item.getString();
          //解决乱码问题
          value = new String(value.getBytes("iso-8859-1"),"utf-8"); 
          request.setAttribute(name, value);
        } else {
          // 获得文件类型
          String contentType = item.getContentType();
          // 获得文件大小
          long fileSize = item.getSize();
          // 获取路径名
          String value = item.getName();
          // 索引到最后一个反斜杠
          int start = value.lastIndexOf("\\");
          // 截取 上传文件的 字符串名字,加1是 去掉反斜杠,
          String filename = value.substring(start + 1);
          if (filename != null && !filename.trim().equals("")) {
            // 如果上传的文件不是图片,那么不上传
            String allImgExt = ".jpg|.jpeg|.gif|.bmp|.png|";
            String extName = filename.substring(filename.indexOf("."), filename.length());
            if (allImgExt.indexOf(extName + "|") == -1) {
              message = "该文件类型不允许上传。请上传 " + allImgExt
                  + " 类型的文件,当前文件类型为" + extName;
              success = false;
              break;
            }
            request.setAttribute(name, filename);
            // 随机数产生名称
            String newName = System.currentTimeMillis() + extName;
            request.setAttribute(name + "Server", newName);
            // 将文件保存到服务器中
            InputStream in = item.getInputStream();
            // 原文件名
            // OutputStream out = new FileOutputStream(new File(path, filename));
            // 随机数文件名
            OutputStream out = new FileOutputStream(new File(path,
                newName));
            int length = 0;
            byte[] buf = new byte[1024];
            while ((length = in.read(buf)) != -1) {
              out.write(buf, 0, length);
            }
            in.close();
            out.close();
          }
        }
      }
    } catch (FileUploadException e) {
      message = "文件的内容过大,请上传小于20MB的文件" ;
      success = false;
      e.printStackTrace();
    } catch (IOException e) {
      success = false;
      e.printStackTrace();
    }
    request.setAttribute("message", message);
    return success;
  }
}

三丶下载的servlet

package com.test.action;
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("/download")
public class FileDownloadAction extends HttpServlet {
  private static final long serialVersionUID = 1L;
  protected void doGet(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
    String id = request.getParameter("id");
    // 根据主键读取文件的真实名字 + 服务器上的名字
    processDownload("1444442288605.png", "腾讯.png", request, response);
  }
  private boolean processDownload(String fileName, String saveName,
      HttpServletRequest request, HttpServletResponse response) {
    boolean success = true;
    // 获取文件下载所在的路径
    String path = request.getServletContext().getRealPath("/upload");
    File fileLoad = new File(path, fileName); // 下载文件
    long fileLength = fileLoad.length(); // 文件大小
    byte[] buffer = new byte[1024]; // 缓冲字节数组
    try {
      response.reset();
      response.setHeader("Content-disposition", "attachment;filename=\""
          + new String(saveName.getBytes("gb2312"), "ISO-8859-1") + "\"");
      response.setContentType("application/octet-stream");
      response.setHeader("Content_Length", String.valueOf(fileLength));
      OutputStream os = response.getOutputStream();
      FileInputStream in = new FileInputStream(fileLoad);
      int hasRead = 0;
      while ((hasRead = in.read(buffer)) != -1) {
        os.write(buffer, 0, hasRead);
      }
      os.flush();
      os.close();
      in.close();
    } catch (IOException e) {
      success = false;
      e.printStackTrace();
    }
    return success;
  }
}

以上所述是小编给大家介绍的JavaWeb中上传和下载文件实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# javaweb上传下载文件  # JavaWeb实现文件的上传与下载  # javaweb实现文件上传与下载功能  # JavaWeb 文件的上传和下载功能简单实现代码  # JavaWeb实现文件上传下载功能实例详解  # Javaweb实现上传下载文件的多种方法  # Java Web实现文件上传和下载接口功能详解  # 上传  # 随机数  # 上传文件  # 表单  # 小编  # 文件上传  # 器上  # 多个  # 在此  # 腾讯  # 给大家  # 不存在  # 先把  # 过大  # 所述  # 该文件  # 给我留言  # 感谢大家  # 主键  # 疑问请 


相关文章: C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何高效利用200m空间完成建站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何用西部建站助手快速创建专业网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  建站之星会员如何解锁更多建站功能?  如何快速生成ASP一键建站模板并优化安全性?  常州企业建站如何选择最佳模板?  家庭服务器如何搭建个人网站?  如何快速建站并高效导出源代码?  如何在七牛云存储上搭建网站并设置自定义域名?  韩国服务器如何优化跨境访问实现高效连接?  制作证书网站有哪些,全国城建培训中心证书查询官网?  建站之星展会模板:智能建站与自助搭建高效解决方案  linux top下的 minerd 木马清除方法  如何挑选高效建站主机与优质域名?  如何选择高效便捷的WAP商城建站系统?  建站之星如何保障用户数据免受黑客入侵?  高端建站三要素:定制模板、企业官网与响应式设计优化  北京专业网站制作设计师招聘,北京白云观官方网站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  建站与域名管理如何高效结合?  如何选择靠谱的建站公司加盟品牌?  建站之星价格显示格式升级,你的预算足够吗?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  开心动漫网站制作软件下载,十分开心动画为何停播?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  教学论文网站制作软件有哪些,写论文用什么软件 ?  建站VPS配置与SEO优化指南:关键词排名提升策略  微信小程序 五星评分(包括半颗星评分)实例代码  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  为什么Go需要go mod文件_Go go mod文件作用说明  建站之星CMS建站配置指南:模板选择与SEO优化技巧  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何获取上海专业网站定制建站电话?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  建站之星ASP如何实现CMS高效搭建与安全管理?  网站代码制作软件有哪些,如何生成自己网站的代码?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在阿里云高效完成企业建站全流程?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  学校建站服务器如何选型才能满足性能需求?  宝塔面板创建网站无法访问?如何快速排查修复?  如何通过VPS建站无需域名直接访问?  小程序网站制作需要准备什么资料,如何制作小程序?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何通过FTP服务器快速搭建网站?  如何选择网络建站服务器?高效建站必看指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。