zoukankan      html  css  js  c++  java
  • 通过接口下载服务上pdf文件

    需要配置web.xml来通过跳过登陆验证

    package com.whir.rd.service;

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.log4j.Logger;

    import com.whir.common.path.SystemPath;
    import com.whir.component.config.ConfigXMLReader;

    public class DownSWLoadServelt extends HttpServlet {
        private static Logger logger = Logger.getLogger(DownSWLoadServelt.class
                .getName());
        private static final ConfigXMLReader reader = new ConfigXMLReader();

        /**
         * Constructor of the object.
         */
        public DownSWLoadServelt() {
            super();
        }

        /**
         * Destruction of the servlet. <br>
         */
        public void destroy() {
            super.destroy(); // Just puts "destroy" string in log
            // Put your code here
        }

        /**
         * The doGet method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to get.
         *
         * @param request
         *            the request send by the client to the server
         * @param response
         *            the response send by the server to the client
         * @throws ServletException
         *             if an error occurred
         * @throws IOException
         *             if an error occurred
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
              
                String downloadFile;
               
                String FileName = request.getParameter("FileName");

     
                if ((FileName.startsWith("/")) || (FileName.startsWith("./")) || (FileName.startsWith("../"))) {
                  return;
                }
                if(FileName==""||FileName.length()<=0){
                    return;
                    
                }
                String ggpath=SystemPath.getRootFilePath() + File.separator + "upload" + File.separator;
                String yearmonth=FileName.substring(0, 6);
                String newPdfPaths = ggpath+"tempfile/temppdf/" + yearmonth + "/";
                String srcFile = newPdfPaths +FileName;
                System.out.println("开始复制文件srcFile"+srcFile);
            
               /* http://222.65.225.7:18080/defaultroot/DownloadServlet?path=govdocumentm"
                + "anager&encrypt=1&name=Image_00001.pdf&FileName=2019122509302615973192955.pdf
                String isEncrypt = "1";

                String mimeType ="application/pdf";
    */            
              /*  OutputStream out = null;
                response.setCharacterEncoding("utf-8");
                response.setContentType("multipart/form-data");
                response.setHeader("Content-Disposition", "99999999.pdf");
                writeBytes(srcFile, response.getOutputStream());
               
                  File file = new File(srcFile);
                  if (file.exists()) {
                    //你的文件所存放的地址 我这边放在e盘下
                        DataOutputStream temps = new DataOutputStream(response.getOutputStream());
                        DataInputStream in = new DataInputStream(new FileInputStream(srcFile));
                        byte[] b = new byte[2048];
                        while ((in.read(b)) != -1) {
                            temps.write(b);
                            temps.flush();
                        }
                        in.close();
                        temps.close();
                    } else {
                       System.out.println("文件不存在");
                    }
    */

                  //获取服务器文件
                File file = new File(srcFile);

                InputStream ins = new FileInputStream(file);
                /* 设置文件ContentType类型,这样设置,会自动判断下载文件类型 */
                response.setContentType("multipart/form-data");
                /* 设置文件头:最后一个参数是设置下载文件名 */
                response.setHeader("Content-Disposition", "attachment;filename="+file.getName());
                try{
                    OutputStream os = response.getOutputStream();
                    byte[] b = new byte[1024];
                    int len;
                    while((len = ins.read(b)) > 0){
                        os.write(b,0,len);
                    }
                    os.flush();
                    os.close();
                    ins.close();
                }catch (IOException ioe){
                   ioe.printStackTrace();
                }
                  
                /*  response.reset();
                  response.setContentType(mimeType);
                  response.setHeader("Content-Disposition", "attachment; filename=" + FileName);
                  response.setContentLength((int)file.length());
                  in = new BufferedInputStream(new FileInputStream(file));
                  out = new BufferedOutputStream(response.getOutputStream());
                  byte[] buf = new byte[8192];
                  int n = -1;
                  if ("1".equals(isEncrypt))
                    while (-1 != (n = in.read(buf, 0, buf.length))) {
                      for (int i0 = 0; i0 < n; ++i0) {
                        buf[i0] = (byte)(buf[i0] + 1);
                      }
                      out.write(buf, 0, n);
                    }
                  else {
                    do
                      out.write(buf, 0, n);
                    while (-1 != (n = in.read(buf, 0, buf.length)));
                  }

                  out.flush();
                }
                catch (IOException e) {
                  e.printStackTrace();
                } catch (Exception e) {
                  throw new ServletException("Download failed", e);
                } finally {
                  try {
                    if (in != null)
                      in.close();
                  }
                  catch (Exception localException7) {
                  }
                  try {
                    if (out != null)
                      out.close();
                  } catch (Exception localException8)
                  {
                  } */
               
        }

         /**
         * 输出指定文件的byte数组
         *
         * @param filePath 文件路径
         * @param os 输出流
         * @return
         */
        public static void writeBytes(String filePath, OutputStream os) throws IOException
        {
            FileInputStream fis = null;
            try
            {
                File file = new File(filePath);
                if (!file.exists())
                {
                    throw new FileNotFoundException(filePath);
                }
                fis = new FileInputStream(file);
                byte[] b = new byte[1024];
                int length;
                while ((length = fis.read(b)) > 0)
                {
                    os.write(b, 0, length);
                }
            }
            catch (IOException e)
            {
                throw e;
            }
            finally
            {
                if (os != null)
                {
                    try
                    {
                        os.close();
                    }
                    catch (IOException e1)
                    {
                        e1.printStackTrace();
                    }
                }
                if (fis != null)
                {
                    try
                    {
                        fis.close();
                    }
                    catch (IOException e1)
                    {
                        e1.printStackTrace();
                    }
                }
            }
        }
        
        /**
         * The doPost method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to
         * post.
         *
         * @param request
         *            the request send by the client to the server
         * @param response
         *            the response send by the server to the client
         * @throws ServletException
         *             if an error occurred
         * @throws IOException
         *             if an error occurred
         */
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }

        /**
         * Initialization of the servlet. <br>
         *
         * @throws ServletException
         *             if an error occurs
         */
        public void init() throws ServletException {
            // Put your code here
        }

        public void printResult(HttpServletResponse response, String content) {
            printResult(response, content, "null");
        }

        public void printResult(HttpServletResponse response, String content,
                String dataJson) {
            
            String result = dataJson;
            //System.out.println("result:" + result);
            try {
                PrintWriter pw = response.getWriter();
                pw.print(result);
                pw.close();
            } catch (IOException e) {
                e.printStackTrace();
                System.out
                        .println("[BaseActionSupport][method=printResult]异常:" + e);
            }
        }

        
    }

  • 相关阅读:
    hdu 1181 (搜索BFS,深搜DFS,并查集)
    [置顶] ZSTACK之OSAL_Nv非易失性存储解读上
    Android中利用Fragment显示为两屏
    WCF也可以做聊天程序
    Myeclipse 连接MSSqlServer
    Mysql和Oracle的卸载
    第 5堂作业
    hdu 3421 Max Sum II
    【求助】一个菜鸟java作业,帮忙看一下错在哪儿,题目是判断回文数
    netcat使用
  • 原文地址:https://www.cnblogs.com/sjzxs/p/14411505.html
Copyright © 2011-2022 走看看