PartServlet/ServletFileUpload/MultipartFile/拖拽上传文件/剪切上传文件

本文介绍了如何利用PartServlet和ServletFileUpload组件实现文件上传功能,包括拖拽上传和剪切上传。通过学习,读者可以掌握Java后端处理文件上传的技巧,并在页面上实现相应的交互效果。
摘要由CSDN通过智能技术生成

学习目标:

常见的文件上传的几种方法:PartServlet/ServletFileUpload/MultipartFile/拖拽上传文件/剪切上传文件

学习产出:

页面展示在最后面:

第一种:PartServlet

@MultipartConfig /*当在servlet上指定时,指示servlet期望的请求是MIME类型multipart*/
public class UploadPartServlet extends HttpServlet {
   


    /**
     * 上传图片存放位置
     */
    private final String UPLOAD_DIR = "/upload";

    /**
     * 上传文件头信息中关于文件名称的标志位
     */
    private final String HEAD_SIGN = "filename=\"";

    @Override
    public void init() {
   
        //初始化上传文件保存文件夹
        File file = new File(this.getServletContext().getRealPath("/") + UPLOAD_DIR);
        if (!file.exists()) {
   
            file.mkdir();
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //记录处理时间
        long start = System.currentTimeMillis();
        //处理二进制流格式
        req.setCharacterEncoding("UTF-8");
        //获取表单元素
        Part partFile1 = req.getPart("partFile1");
        //获取文件名称, +10的原因是 HEAD_SIGN 的长度是 10;
        String header = partFile1.getHeader("content-disposition");
        String fileName = header.substring(header.indexOf(HEAD_SIGN) + 10, header.lastIndexOf("\""));
        //输出数据
        partFile1.write(req.getSession().getServletContext().getRealPath(UPLOAD_DIR) + "/" + fileName);
        //上传结束
        long end = System.currentTimeMillis();
        String outString = "<script type='text/javascript'>" + "window.parent.showTime(" + "\"#span1\", " + (end - start) + ")" + "</script>";
        PrintWriter writer = resp.getWriter();
        writer.write(outString);
    }
}
第二种:ServletFileUpload
/**
 * 功能描述: 使用fileUpload组件上传文件
 * <dependency>
 * <groupId>commons-fileupload</groupId>
 * <artifactId>commons-fileupload</artifactId>
 * <version>1.3.1</version>
 * </dependency>
 * <dependency>
 * <groupId>commons-io</groupId>
 * <artifactId>commons-io</artifactId>
 * <version>2.4</version>
 * </dependency>
 *
 */
public class FileUploadServlet extends HttpServlet {
   

    /*上传文件路径*/
    private File uploadFilePath;

    /*零时缓存文件路径*/
    private File tempFilePath;

    @Override
    public void init() {
   
        uploadFilePath = new File(this.getServletContext().getRealPath("/upload"));
        tempFilePath = new File(this.getServletContext().getRealPath("/temp"))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值