zoukankan      html  css  js  c++  java
  • Ajax文件上传,Servlet解析并下载--代码

    --使用依赖包

    commons-fileupload-1.4.jar
    commons-io-2.6.jar
    hutool-all-5.2.3.jar

    --html

    文件上传测试
    <form action="" method="post" enctype="multipart/form-data">
        名字<input type="text" id="username">
        文件<input type="file" id="filecontent">
        <input type="button" value="提交" id="button_id">
    </form>

    --js

    $("#button_id").click(() => {
      let formData = new FormData();
      formData.append("name", $("#username").val());
      formData.append("file", $("#filecontent")[0].files[0])
      $.ajax({
        url: "<%=request.getContextPath()%>/HasUserNameServlet",
        async: true,
        data: formData,
        success: function (res) {
          console.log(res)
        },
        processData: false, //告诉jquery要传输data对象
        contentType: false,
        type: "post",
        dataType: "json"
      });
    });

    --servlet

    import cn.hutool.core.io.FileUtil;
    import cn.hutool.core.io.IoUtil;
    import cn.hutool.core.util.IdUtil;
    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;
    
    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 java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    @WebServlet("/HasUserNameServlet")
    public class HasUserNameServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
                // 1.创建磁盘文件项工厂
                DiskFileItemFactory factory = new DiskFileItemFactory();
                // 2.创建核心解析器对象
                ServletFileUpload fileUpload = new ServletFileUpload(factory);
                // 3.解析request请求,返回list集合
                List<FileItem> list = fileUpload.parseRequest(request);
                // 4.遍历list,获取上传项
                for (FileItem fileItem : list) {
                    // 5.判断是文件项还是普通项
                    if (fileItem.isFormField()) {
                        // a.获取name属性
                        String name = fileItem.getFieldName();
                        // b.获取value属性
                        String value = fileItem.getString();
                        System.out.println("普通文本项:" + name + "=" + value);
                    } else {
                        // 上传文件项
                        // a.获取文件名
                        String filename = fileItem.getName();
                        // 获取上传文件扩展名
                        String extName = FileUtil.extName(filename);
                        // 生成随机文件名
                        filename = IdUtil.simpleUUID() + "." + extName;
                        // b.获取文件字节输入流
                        InputStream in = fileItem.getInputStream();
                        System.out.println("上传文件名:" + filename + ",上传文件流:" + in);
                        // c.获取服务器upload目录真实路径...
                        String realPath = request.getServletContext().getRealPath("/upload/");
                        // d.设置文件字节输出流
                        FileOutputStream out = new FileOutputStream(new File(realPath + filename));
                        // 流的copy
                        IoUtil.copy(in, out);
                        // 关流
                        out.close();
                        in.close();
                        response.getWriter().write("sucess");
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    jdk.jre.jvm 三者之间的关系?
    SQL7
    SQL6
    sql题
    sql题
    sql
    简说SQL题
    递归算法
    JAVA的简单描述
    第一篇技术博客
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13414585.html
Copyright © 2011-2022 走看看