zoukankan      html  css  js  c++  java
  • 文件下载--getOutputStream输出二进制字符

    单一文件上传:
    一、前台 uploadFile.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
     
        <title>My JSP 'uploadFile.jsp' starting page</title>
     
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <meta http-equiv="ContentType" content="text/html;charset=UTF-8">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
     
      </head>
     
      <body>
          <form action="upload.action" method="post" enctype="multipart/form-data">
            <input type="file" name="myfile" />
              <input type="submit" name="upload" value="上传" />
          </form>
     
      </body>
    </html>
    二、后台 uploadFile.jsp
    package com.zhaoran.controller;
     
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Part;
     
    public class UploadServlet extends HttpServlet{
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req, resp);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setCharacterEncoding("UTF-8");
            resp.setCharacterEncoding("UTF-8");
            resp.setContentType("text/html;charset=UTF-8");
            Part part=req.getPart("myfile");
            String filename=getFileName(part);
            writeTo(filename,part);
            req.setAttribute("msg", "文件上传成功");
            req.getRequestDispatcher("common/success.jsp").forward(req, resp);
        }
        private void writeTo(String filename, Part part) throws IOException {
            InputStream inputStream=part.getInputStream();
            OutputStream outputStream=new FileOutputStream("e://"+filename);
            byte[] buff=new byte[1024];
            int len=-1;
            while((len=inputStream.read(buff))!=-1){
                outputStream.write(buff, 0, len);
            }
            outputStream.close();
            inputStream.close();
        }
        private String getFileName(Part part) {
            //String header=part.getHeader("Content-Disposition");
            String header=part.getHeader("Content-Disposition");
            System.out.println(header);
            String filename=header.substring(header.indexOf("filename="")+10,header.lastIndexOf("""));
            System.out.println(filename);
            return filename;
        }
    }
    三、配置文件 web.xml
    <?xml version="1.0" encoding="UTF-8"?>
      <display-name>login</display-name>
     
      <servlet>
          <servlet-name>loginServlet</servlet-name>
          <servlet-class>com.zhaoran.controller.LoginServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>loginServlet</servlet-name>
          <url-pattern>/login.action</url-pattern>
      </servlet-mapping>
      <servlet>
          <servlet-name>uploadServlet</servlet-name>
          <multipart-config></multipart-config>
          <servlet-class>com.zhaoran.controller.UploadServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>uploadServlet</servlet-name>
          <url-pattern>/upload.action</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
     
     
    文件的批量上传:
    一、前台页面
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
     
        <title>My JSP 'uploadFile.jsp' starting page</title>
     
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <meta http-equiv="ContentType" content="text/html;charset=UTF-8">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
     
      </head>
     
      <body>
    <!-- 文件上传时,enctype需设置为multipart/form-data-->
          <form action="upload.action" method="post" enctype="multipart/form-data">
            <input type="file" name="myfile" />
            <br />
              <input type="submit" name="upload" value="上传" />
          </form>
          <hr />
          <form action="upload2.action" method="post" enctype="multipart/form-data">
            <input type="file" name="myfile" />
            <br />
              <input type="submit" name="upload" value="上传" />
          </form>
          <hr />
          <form action="upload3.action" method="post" enctype="multipart/form-data">
            文件一:<input type="file" name="myfile1" />
            <br />
            文件二:<input type="file" name="myfile2" />
            <br />
            文件三:<input type="file" name="myfile3" />
            <br />
              <input type="submit" name="upload" value="上传" />
          </form>
      </body>
    </html>
     
    二、后台servlet   UploadServlet3.java
    package com.zhaoran.controller;
     
    import java.io.IOException;
     
    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;
    //采用注解方式配置servlet,文件上传中@MultipartConfig必不可少
    @MultipartConfig(location="e://")
    @WebServlet("/upload3.action")
    public class UploadServlet3 extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setCharacterEncoding("UTF-8");
            for(Part part:req.getParts()){
    //            System.out.println(part.getName());
                if(part.getName().startsWith("myfile")){
                    String filename=getFileName(part);
    //                System.out.println(filename);
                    part.write(filename);
                }
            }
            req.setAttribute("msg", "文件批量上传成功");
            req.getRequestDispatcher("common/success.jsp").forward(req, resp);
            return;
        }
        private String getFileName(Part part) {
            String header=part.getHeader("Content-Disposition");//Content-Disposition
            String filename=header.substring(header.indexOf("filename="")+10, header.lastIndexOf("""));
            return filename;
        }
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req, resp);
        }
    }
    三、采用注解方式,未使用配置文件web.xml
  • 相关阅读:
    DailyRollingFileAppender的使用
    CSS自动换行
    MAC与WIN10电脑共享文件
    C++常用STL
    Python机器学习及实践 课后小题
    Mac上利用VScode配置c/c++开发环境
    pycharm+anaconda在Mac上的配置方法 2019.11.29
    二分查找 python实现
    python3相关
    算法图解 各部分回忆
  • 原文地址:https://www.cnblogs.com/zhaoran8775/p/5521488.html
Copyright © 2011-2022 走看看