<td id="4iyis"><tr id="4iyis"></tr></td>
<fieldset id="4iyis"><tr id="4iyis"></tr></fieldset>
  • <noframes id="4iyis"><code id="4iyis"></code></noframes>
  • <menu id="4iyis"></menu>
  • <fieldset id="4iyis"><acronym id="4iyis"></acronym></fieldset>
  • <sup id="4iyis"><strong id="4iyis"></strong></sup>
    \r\n    \r\n    \/uploadServlet\" enctype=\"multipart\/form-data\" method=\"post\">\r\n        選擇文件:<\/span>\r\n        \r\n    <\/form>\r\n<\/body>\r\n<\/html><\/pre>

    新建處理文件上傳的Servlet<\/p>

    package com.load;\r\n\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.util.List;\r\nimport javax.servlet.ServletContext;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport org.apache.commons.fileupload.FileItem;\r\nimport org.apache.commons.fileupload.FileUploadException;\r\nimport org.apache.commons.fileupload.disk.DiskFileItemFactory;\r\nimport org.apache.commons.fileupload.servlet.ServletFileUpload;\r\n@WebServlet(\"\/uploadServlet\")\r\npublic class uploadServlet extends HttpServlet {\r\n    private static final long serialVersionUID = 1L;\r\n    public uploadServlet() {\r\n        super();\r\n    }\r\n    \/* fileupload 包中, HTTP 請求中的復(fù)雜表單元素都被看做一個 FileItem 對象;\r\n     * FileItem 對象必須由 ServletFileUpload 類中的 parseRequest() 方法解析 HTTP 請求\r\n     * (即被包裝之后的 HttpServletRequest 對象)出來,即分離出具體的文本表單和上傳文件\r\n     * *\/\r\n    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        \/\/通過isMultipartContent()方法:分析請求里面是不是有文件上的請求,\r\n        boolean isMultipart = ServletFileUpload.isMultipartContent(request);\r\n        if(isMultipart){\r\n            \/\/創(chuàng)建可設(shè)置的磁盤節(jié)點(diǎn)工廠\r\n            DiskFileItemFactory factory = new DiskFileItemFactory();\r\n            \/\/獲取請求的上下文信息\r\n            ServletContext servletContext = request.getServletContext();\r\n            \/\/緩存目錄,每個服務(wù)器特定的目錄\r\n            File repository = (File) servletContext.getAttribute(\"javax.servlet.context.tempdir\");\r\n            \/\/設(shè)置服務(wù)器的緩存目錄\r\n            factory.setRepository(repository);\r\n            \/\/ServletFileUpload 對象的創(chuàng)建需要依賴于 FileItemFactory \r\n            \/\/工廠將獲得的上傳文件 FileItem 對象保存至服務(wù)器硬盤,即 DiskFileItem 對象。\r\n            ServletFileUpload upload = new ServletFileUpload(factory);\r\n            try {\r\n                \/\/解析即被包裝之后的 HttpServletRequest對象,既是分離文本表單和上傳文件(http請求會被包裝為HttpServletRequest)\r\n                List items = upload.parseRequest(request);\r\n                for(FileItem item:items){\r\n                    String fieldName = item.getFieldName();    \r\n                    String fileName = item.getName();\r\n                    String contentType = item.getContentType();\r\n                    boolean isInMemory = item.isInMemory();\r\n                    long sizeInBytes = item.getSize();\r\n                    \/\/實例化一個文件\r\n                    \/\/request.getRealPath(獲取真實路徑)\r\n                    File file = new File(request.getRealPath(\"\/\")+\"\/loads\"+fileName.substring(fileName.lastIndexOf(\"\\\\\")+1,fileName.length()));\r\n                    item.write(file);\r\n                }\r\n            } catch (FileUploadException e) {\r\n                e.printStackTrace();\r\n            } catch (Exception e) {\r\n                \r\n                e.printStackTrace();\r\n            }\r\n        }\r\n    }\r\n\r\n    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        doGet(request, response);\r\n    }\r\n}<\/pre>

    (第二種上傳的方法)<\/p>

    新建Jsp頁面(同上,只是路徑改變下)<\/p>

    <%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\"\r\n    pageEncoding=\"UTF-8\"%>\r\n\r\n\r\n\r\n\r\nupload file<\/title>\r\n<\/head>\r\n<body>
    <h1><a href="http://m.miracleart.cn/">国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂</a></h1>\r\n    <!--這里的<%=request.getContextPath()%>是表示項目的絕對路徑,也就是說不管你以后將項目拷貝到哪個位置,它都會找到準(zhǔn)確的路徑  -->\r\n    <form action=\"<%=request.getContextPath()%>\/uploadservlet1\" enctype=\"multipart\/form-data\" method=\"post\">\r\n        <span>選擇文件:<\/span><input type=\"file\" name=\"file1\">\r\n        <input type=\"submit\" value=\"上傳\">\r\n    <\/form>\r\n<\/body>\r\n<\/html>\r\n\r\nJSP頁面<\/pre><p>建立Servlet處理上傳<\/p><pre class='brush:php;toolbar:false;'>package com.load;\r\n\r\nimport java.io.File;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.io.OutputStream;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.MultipartConfig;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport javax.servlet.http.Part;\r\n@WebServlet(\"\/uploadservlet1\")\r\n@MultipartConfig(location=\"\")\r\npublic class uploadservlet1 extends HttpServlet {\r\n    private static final long serialVersionUID = 1L;\r\n    public uploadservlet1() {\r\n        super();\r\n    }\r\n\r\n    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        response.setContentType(\"text\/html;charset=UTF-8\");\r\n        request.setCharacterEncoding(\"utf-8\");\r\n        \r\n        \/\/取得上傳文件,讀取文件\r\n        Part part =  request.getPart(\"file1\");\r\n        \/\/定義一個變量去接收文件名\r\n        String filename = null;\r\n        \/\/Content-Disposition: 就是當(dāng)用戶想把請求所得的內(nèi)容存為一個文件的時候提供一個默認(rèn)的文件名\r\n        \/\/Content-Disposition:告訴瀏覽器以下載的方式打開文件\r\n        for (String content : part.getHeader(\"content-disposition\").split(\";\")) {\r\n            System.out.println(content);\r\n            \/\/取得文件名\r\n            if (content.trim().startsWith(\"filename\")) {\r\n                \/\/截取文件名\r\n                filename = content.substring(\r\n                        content.indexOf('=') + 1).trim().replace(\"\\\"\", \"\");\r\n            }\r\n        }\r\n        \/\/輸出流\r\n         OutputStream out = null;\r\n         \/\/輸入流\r\n         InputStream filecontent = null;\r\n         \/\/File.separator  取得系統(tǒng)的分割線等數(shù)據(jù)\r\n         out = new FileOutputStream(new File(\"e:\/loads\" + File.separator + filename));\r\n         int read;\r\n        \/\/獲得一個輸入流\r\n        filecontent = part.getInputStream();\r\n        final byte[] bytes = new byte[1024];\r\n        \r\n        while ((read = filecontent.read(bytes)) != -1) {\r\n            out.write(bytes, 0, read);\r\n        }\r\n       System.out.println(\"New file \" + filename + \" created at \" + \"\/loads\");\r\n    }\r\n\r\n    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        \/\/ TODO Auto-generated method stub\r\n        doGet(request, response);\r\n    }\r\n}<\/pre><p>(第三種上傳的方法)<\/p><p>這里使用的是jspSmartUpload包上傳下載,筆者認(rèn)為這種上傳下載較為簡單,但是好像不是很多人用,不懂,下載地址在這里(點(diǎn)我下載)<\/p><p>創(chuàng)建HTML頁面<\/p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\">\r\n<title>上傳文件<\/title>\r\n<\/head>\r\n<body>\r\n    <p> <\/p>\r\n    <p align=\"center\">上傳文件選擇<\/p>\r\n    <form method=\"post\" Action=\"..\/DouploadServlet\" enctype=\"multipart\/form-data\">\r\n        <table width=\"75%\" border=\"1\" align=\"center\">\r\n            <tr><td><div align=\"center\">\r\n                1.<input type=\"file\" name=\"file1\" >\r\n            <\/div><\/td><\/tr>\r\n                <tr><td><div align=\"center\">\r\n                2.<input type=\"file\" name=\"file2\" >\r\n            <\/div><\/td><\/tr>\r\n                <tr><td><div align=\"center\">\r\n                3.<input type=\"file\" name=\"file3\" >\r\n            <\/div><\/td><\/tr>\r\n                <tr><td><div align=\"center\">\r\n                <input type=\"submit\" name=\"Submit\" value=\"上傳他\">\r\n            <\/div><\/td><\/tr>\r\n        <\/table>\r\n    <\/form>\r\n<\/body>\r\n<\/html><\/pre><p>創(chuàng)建Servlet處理上傳文件<\/p><pre class='brush:php;toolbar:false;'>package com.load;\r\n\r\nimport java.io.IOException;\r\nimport java.io.PrintWriter;\r\n\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport javax.servlet.jsp.JspFactory;\r\nimport javax.servlet.jsp.PageContext;\r\n\r\nimport com.jspsmart.upload.File;\r\nimport com.jspsmart.upload.SmartUpload;\r\nimport com.jspsmart.upload.SmartUploadException;\r\n@WebServlet(\"\/DouploadServlet\")\r\npublic class DouploadServlet extends HttpServlet {\r\n    private static final long serialVersionUID = 1L;\r\n       \r\n    public DouploadServlet() {\r\n        super();\r\n    }\r\n\r\n    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        response.setContentType(\"text\/html;charset=UTF-8\");\r\n        PrintWriter out = response.getWriter();\r\n        \/\/新建一個智能上傳對象\r\n        SmartUpload su = new SmartUpload();\r\n        \/*\r\n         *  PageContext pageContext;\r\n            HttpSession session;\r\n            ServletContext application;\r\n            ServletConfig config;\r\n            JspWriter out;\r\n            Object page = this;\r\n            HttpServletRequest request, \r\n            HttpServletResponse response\r\n            其中page對象,request和response已經(jīng)完成了實例化,而其它5個沒有實例化的對象通過下面的方式實例化\r\n            pageContext = jspxFactory.getPageContext(this, request, response,null, true, 8192, true);\r\n         *\/\r\n        \/\/通過Jsp工廠類獲取上下文環(huán)境\r\n        PageContext pagecontext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);\r\n        \/\/上傳初始化\r\n        su.initialize(pagecontext);\r\n\r\n        \/\/上傳文件\r\n        try {\r\n            su.upload();\r\n            \/\/將上傳文件保存到指定目錄\r\n            int count = su.save(\"\/share\");\r\n            out.println(count+\"個文件上傳成功!<br>\"+su.toString());\r\n        } catch (SmartUploadException e) {\r\n            e.printStackTrace();\r\n        }\r\n        \r\n        \/\/逐個提取上傳文件信息\r\n        for(int i=0;i<su.getFiles().getCount();i++){\r\n            File file = su.getFiles().getFile(i);\r\n            \/\/如果文件不存在\r\n            if(file.isMissing()) continue;\r\n            \r\n            \/\/顯示當(dāng)前文件信息\r\n            out.println(\"<table border=1>\");\r\n            out.println(\"<tr><td>表單項名(FieldName)<\/td><\/td>\"+file.getFieldName()+\"<\/td><\/tr>\");\r\n            out.println(\"<tr><td>文件長度<\/td><td>\"+file.getSize()+\"<\/td><\/tr>\");\r\n            out.println(\"<tr><td>文件名<\/td><td>\"+file.getFileName()+\"<\/td><\/tr>\");\r\n            out.println(\"<tr><td>文件擴(kuò)展名<\/td><td>\"+file.getFileExt()+\"<\/td><\/tr>\");\r\n            out.println(\"<tr><td>文件全名<\/td><td>\"+file.getFilePathName()+\"<\/td><\/tr>\");\r\n            out.println(\"<\/table><br>\");\r\n        }\r\n    }\r\n\r\n    \/**\r\n     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)\r\n     *\/\r\n    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        \/\/ TODO Auto-generated method stub\r\n        doGet(request, response);\r\n    }\r\n\r\n}<\/pre><p>3、實現(xiàn)文件下載<\/p><p>(第一種文件下載)<\/p><p>注意:該代碼是直接訪問Servlet類的<\/p><pre class='brush:php;toolbar:false;'>package com.load;\r\n\r\nimport java.io.FileInputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.io.OutputStream;\r\n\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\n\r\n\/\/直接使用Http:\/\/localhost:8080\/Test1\/download進(jìn)行下載,但是這個有缺陷,如果下載文件名中有中文,就會變成亂碼現(xiàn)象!\r\n@WebServlet(\"\/download\")\r\npublic class download extends HttpServlet {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    public download() {\r\n        super();\r\n    }\r\n    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n         response.setContentType(\"text\/plain;charset=utf-8\");\r\n         response.setCharacterEncoding(\"utf-8\");\r\n         response.setHeader(\"Location\",\"中文.txt\");\r\n         response.setHeader(\"Content-Disposition\", \"attachment; filename=\" + \"賬號.txt\");\r\n         OutputStream outputStream = response.getOutputStream();\r\n         InputStream inputStream = new FileInputStream(\"E:\/loads\"+\"\/賬號.txt\");\r\n         byte[] buffer = new byte[1024];\r\n         int i = -1;\r\n         while ((i = inputStream.read(buffer)) != -1) {\r\n          outputStream.write(buffer, 0, i);\r\n         }\r\n         outputStream.flush();\r\n         outputStream.close();\r\n    }\r\n    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        doGet(request, response);\r\n    }\r\n\r\n}<\/pre><p>(第二種下載方法)<\/p><p>新建jsp頁面選擇下載<\/p><pre class='brush:php;toolbar:false;'><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\"\r\n    pageEncoding=\"UTF-8\"%>\r\n<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/html4\/loose.dtd\">\r\n<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\">\r\n<title>下載<\/title>\r\n<\/head>\r\n<body>\r\n    <a href=\"..\/DoDownloadServlet?filename=呵呵.txt\">點(diǎn)擊下載<\/a>\r\n<\/body>\r\n<\/html>\r\n\r\nJsp頁面代碼<\/pre><p>創(chuàng)建Servlet類進(jìn)行下載(注意:該下載如果文件名是中文的話,一樣會出現(xiàn)亂碼現(xiàn)象)<\/p><pre class='brush:php;toolbar:false;'>package com.load;\r\n\r\nimport java.io.BufferedInputStream;\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.io.OutputStream;\r\nimport java.net.URLEncoder;\r\n\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport javax.servlet.jsp.JspFactory;\r\nimport javax.servlet.jsp.PageContext;\r\n\r\nimport org.hsqldb.lib.StringUtil;\r\n\r\nimport com.jspsmart.upload.SmartUpload;\r\nimport com.jspsmart.upload.SmartUploadException;\r\n\r\n@WebServlet(\"\/DoDownloadServlet\")\r\npublic class DoDownloadServlet extends HttpServlet {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    public DoDownloadServlet() {\r\n        super();\r\n    }\r\n\r\n    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        \/\/得到下載文件的名稱\r\n        \/\/String filename = request.getParameter(\"filename\");\r\n        \/\/String filename = new String(FileName.getBytes(\"iso8859-1\"),\"UTF-8\");\r\n        \/\/新建SmartUpload對象\r\n        SmartUpload su = new SmartUpload();\r\n        PageContext pagecontext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);\r\n        \/\/上傳初始化\r\n        su.initialize(pagecontext);\r\n        \/\/設(shè)置禁止打開該文件\r\n        su.setContentDisposition(null);\r\n        \/\/下載文件\r\n        try {\r\n            su.downloadFile(\"\/listener\/\"+filename);\r\n        } catch (SmartUploadException e) {\r\n            \/\/ TODO Auto-generated catch block\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n\r\n    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        doGet(request, response);\r\n    }\r\n}<\/pre><p>(第三種下載的方法)<\/p><p>同上的jsp頁面代碼,這里就不再重復(fù)了。<\/p><p>新建Serlvet類,實現(xiàn)下載功能(注意:這里文件名就算是中文名,也不會出現(xiàn)亂碼問題了!)<\/p><pre class='brush:php;toolbar:false;'>package com.load;\r\n\r\nimport java.io.BufferedInputStream;\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.io.OutputStream;\r\nimport java.net.URLEncoder;\r\n\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport javax.servlet.jsp.JspFactory;\r\nimport javax.servlet.jsp.PageContext;\r\n\r\nimport org.hsqldb.lib.StringUtil;\r\n\r\nimport com.jspsmart.upload.SmartUpload;\r\nimport com.jspsmart.upload.SmartUploadException;\r\n\r\n@WebServlet(\"\/DoDownloadServlet\")\r\npublic class DoDownloadServlet extends HttpServlet {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    public DoDownloadServlet() {\r\n        super();\r\n    }\r\n\r\n\r\n    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        \/\/獲得文件名稱\r\n        String path1 = request.getParameter(\"filename\");\r\n        \/\/獲得路徑名稱\r\n        String path = request.getSession().getServletContext().getRealPath(\"\/listener\/\"+path1);\r\n         \/\/ path是根據(jù)日志路徑和文件名拼接出來的\r\n         File file = new File(path);\r\n         String filename = file.getName();\r\n        try {\r\n              \/\/判斷是否是IE11\r\n              Boolean flag= request.getHeader(\"User-Agent\").indexOf(\"like Gecko\")>0;\r\n            \/\/IE11 User-Agent字符串:Mozilla\/5.0 (Windows NT 6.1; WOW64; Trident\/7.0; rv:11.0) like Gecko\r\n            \/\/IE6~IE10版本的User-Agent字符串:Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.0; Trident\/6.0)\r\n               if (request.getHeader(\"User-Agent\").toLowerCase().indexOf(\"msie\") >0||flag){\r\n                   filename = URLEncoder.encode(filename, \"UTF-8\");\/\/IE瀏覽器\r\n               }else {\r\n                \/\/先去掉文件名稱中的空格,然后轉(zhuǎn)換編碼格式為utf-8,保證不出現(xiàn)亂碼,\r\n                \/\/這個文件名稱用于瀏覽器的下載框中自動顯示的文件名\r\n                filename = new String(filename.replaceAll(\" \", \"\").getBytes(\"UTF-8\"), \"ISO8859-1\");\r\n                \/\/firefox瀏覽器\r\n                \/\/firefox瀏覽器User-Agent字符串: \r\n                \/\/Mozilla\/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko\/20100101 Firefox\/36.0\r\n               }  InputStream fis = new BufferedInputStream(new FileInputStream(path));\r\n               byte[] buffer;\r\n               buffer = new byte[fis.available()];\r\n                  fis.read(buffer);\r\n                  fis.close();\r\n                  response.reset();\r\n                  response.addHeader(\"Content-Disposition\", \"attachment;filename=\" +filename);\r\n                  response.addHeader(\"Content-Length\", \"\" + file.length());\r\n                  OutputStream os = response.getOutputStream();\r\n                  response.setContentType(\"application\/octet-stream\");\r\n                  os.write(buffer);\/\/ 輸出文件\r\n                  os.flush();\r\n                  os.close();\r\n              } catch (IOException e) {\r\n               e.printStackTrace();\r\n              }\r\n                System.out.println(filename);\r\n    }\r\n\r\n    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n        doGet(request, response);\r\n    }\r\n}<\/pre><p><br><\/p>"}	</script>
    	
    <meta http-equiv="Cache-Control" content="no-transform" />
    <meta http-equiv="Cache-Control" content="no-siteapp" />
    <script>var V_PATH="/";window.onerror=function(){ return true; };</script>
    </head>
    
    <body data-commit-time="2023-12-28T14:50:12+08:00" class="editor_body body2_2">
    	<link rel="stylesheet" type="text/css" href="/static/csshw/stylehw.css">
    <header>
        <div   id="377j5v51b"   class="head">
            <div   id="377j5v51b"   class="haed_left">
                <div   id="377j5v51b"   class="haed_logo">
                    <a href="http://m.miracleart.cn/" title="" class="haed_logo_a">
                        <img src="/static/imghw/logo.png" alt="" class="haed_logoimg">
                    </a>
                </div>
                <div   id="377j5v51b"   class="head_nav">
                    <div   id="377j5v51b"   class="head_navs">
                        <a href="javascript:;" title="Community" class="head_nava head_nava-template1">Community</a>
                        <div   class="377j5v51b"   id="dropdown-template1" style="display: none;">
                            <div   id="377j5v51b"   class="languagechoose">
                                <a href="http://m.miracleart.cn/article.html" title="Articles" class="languagechoosea on">Articles</a>
                                <a href="http://m.miracleart.cn/faq/zt" title="Topics" class="languagechoosea">Topics</a>
                                <a href="http://m.miracleart.cn/wenda.html" title="Q&A" class="languagechoosea">Q&A</a>
                            </div>
                        </div>
                    </div>
    
                    <div   id="377j5v51b"   class="head_navs">
                        <a href="javascript:;" title="Learn" class="head_nava head_nava-template1_1">Learn</a>
                        <div   class="377j5v51b"   id="dropdown-template1_1" style="display: none;">
                            <div   id="377j5v51b"   class="languagechoose">
                                <a href="http://m.miracleart.cn/course.html" title="Course" class="languagechoosea on">Course</a>
                                <a href="http://m.miracleart.cn/dic/" title="Programming Dictionary" class="languagechoosea">Programming Dictionary</a>
                            </div>
                        </div>
                    </div>
    
                    <div   id="377j5v51b"   class="head_navs">
                        <a href="javascript:;" title="Tools Library" class="head_nava head_nava-template1_2">Tools Library</a>
                        <div   class="377j5v51b"   id="dropdown-template1_2" style="display: none;">
                            <div   id="377j5v51b"   class="languagechoose">
                                <a href="http://m.miracleart.cn/toolset/development-tools" title="Development tools" class="languagechoosea on">Development tools</a>
                                <a href="http://m.miracleart.cn/toolset/website-source-code" title="Website Source Code" class="languagechoosea">Website Source Code</a>
                                <a href="http://m.miracleart.cn/toolset/php-libraries" title="PHP Libraries" class="languagechoosea">PHP Libraries</a>
                                <a href="http://m.miracleart.cn/toolset/js-special-effects" title="JS special effects" class="languagechoosea on">JS special effects</a>
                                <a href="http://m.miracleart.cn/toolset/website-materials" title="Website Materials" class="languagechoosea on">Website Materials</a>
                                <a href="http://m.miracleart.cn/toolset/extension-plug-ins" title="Extension plug-ins" class="languagechoosea on">Extension plug-ins</a>
                            </div>
                        </div>
                    </div>
    
                    <div   id="377j5v51b"   class="head_navs">
                        <a href="http://m.miracleart.cn/ai" title="AI Tools" class="head_nava head_nava-template1_3">AI Tools</a>
                    </div>
    
                    <div   id="377j5v51b"   class="head_navs">
                        <a href="javascript:;" title="Leisure" class="head_nava head_nava-template1_3">Leisure</a>
                        <div   class="377j5v51b"   id="dropdown-template1_3" style="display: none;">
                            <div   id="377j5v51b"   class="languagechoose">
                                <a href="http://m.miracleart.cn/game" title="Game Download" class="languagechoosea on">Game Download</a>
                                <a href="http://m.miracleart.cn/mobile-game-tutorial/" title="Game Tutorials" class="languagechoosea">Game Tutorials</a>
    
                            </div>
                        </div>
                    </div>
                </div>
            </div>
                        <div   id="377j5v51b"   class="head_search">
                    <input id="key_words"  onkeydown="if (event.keyCode == 13) searchs('en')" class="search-input" type="text" autocomplete="off" name="keywords" required="required" placeholder="Block,address,transaction,news" value="">
                    <a href="javascript:;" title="search"  onclick="searchs('en')"><img src="/static/imghw/find.png" alt="search"></a>
                </div>
                    <div   id="377j5v51b"   class="head_right">
                <div   id="377j5v51b"   class="haed_language">
                    <a href="javascript:;" class="layui-btn haed_language_btn">English<i class="layui-icon layui-icon-triangle-d"></i></a>
                    <div   class="377j5v51b"   id="dropdown-template" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                                                    <a href="javascript:setlang('zh-cn');" title="簡體中文" class="languagechoosea">簡體中文</a>
                                                    <a href="javascript:;" title="English" class="languagechoosea">English</a>
                                                    <a href="javascript:setlang('zh-tw');" title="繁體中文" class="languagechoosea">繁體中文</a>
                                                    <a href="javascript:setlang('ja');" title="日本語" class="languagechoosea">日本語</a>
                                                    <a href="javascript:setlang('ko');" title="???" class="languagechoosea">???</a>
                                                    <a href="javascript:setlang('ms');" title="Melayu" class="languagechoosea">Melayu</a>
                                                    <a href="javascript:setlang('fr');" title="Fran?ais" class="languagechoosea">Fran?ais</a>
                                                    <a href="javascript:setlang('de');" title="Deutsch" class="languagechoosea">Deutsch</a>
                                                </div>
                    </div>
                </div>
                <span id="377j5v51b"    class="head_right_line"></span>
                                <div style="display: block;" id="login" class="haed_login ">
                        <a href="javascript:;"  title="Login" class="haed_logina ">Login</a>
                    </div>
                    <div style="display: block;" id="reg" class="head_signup login">
                        <a href="javascript:;"  title="singup" class="head_signupa">singup</a>
                    </div>
                
            </div>
        </div>
    </header>
    
    	
    	<main>
    		<div   id="377j5v51b"   class="Article_Details_main">
    			<div   id="377j5v51b"   class="Article_Details_main1">
    							<div   id="377j5v51b"   class="Article_Details_main1M">
    					<div   id="377j5v51b"   class="phpgenera_Details_mainL1">
    						<a href="http://m.miracleart.cn/" title="Home"
    							class="phpgenera_Details_mainL1a">Home</a>
    						<img src="/static/imghw/top_right.png" alt="" />
    												<a href="http://m.miracleart.cn/class-content.html"
    							class="phpgenera_Details_mainL1a">類庫下載</a>
    						<img src="/static/imghw/top_right.png" alt="" />
    												<a href="http://m.miracleart.cn/java-class-code.html"
    							class="phpgenera_Details_mainL1a">java類庫</a>
    						<img src="/static/imghw/top_right.png" alt="" />
    						<span>Javaweb - upload and download files</span>
    					</div>
    					
    					<div   id="377j5v51b"   class="Articlelist_txts">
    						<div   id="377j5v51b"   class="Articlelist_txts_info">
    							<h1 class="Articlelist_txts_title">Javaweb - upload and download files</h1>
    							<div   id="377j5v51b"   class="Articlelist_txts_info_head">
    								<div   id="377j5v51b"   class="author_info">
    									<a href="http://m.miracleart.cn/member/13.html"  class="author_avatar">
    									<img class="lazy"  data-src="https://img.php.cn/upload/avatar/000/000/013/6177b5643d1eb119.png" src="/static/imghw/default1.png" alt="高洛峰">
    									</a>
    									<div   id="377j5v51b"   class="author_detail">
    																			<a href="http://m.miracleart.cn/member/13.html" class="author_name">高洛峰</a>
                                    										</div>
    								</div>
                    			</div>
    							<span id="377j5v51b"    class="Articlelist_txts_time">Oct 10, 2016 am	 09:11 AM</span>
    														
    						</div>
    					</div>
    					<hr />
    					<div   id="377j5v51b"   class="article_main php-article">
    						<div   id="377j5v51b"   class="article-list-left detail-content-wrap content">
    						<ins class="adsbygoogle"
    							style="display:block; text-align:center;"
    							data-ad-layout="in-article"
    							data-ad-format="fluid"
    							data-ad-client="ca-pub-5902227090019525"
    							data-ad-slot="3461856641">
    						</ins>
    						
    
    					<p style="margin-top: 10px; font-size: 21px; line-height: 1.5; color: rgb(0, 0, 0); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(238, 238, 221);">一、前言</p>
    <p>在Javaweb中,上傳下載是經(jīng)常用到的功能,對于文件上傳,瀏覽器在上傳的過程中是以流的過程將文件傳給服務(wù)器,一般都是使用commons-fileupload這個包實現(xiàn)上傳功能,因為commons-fileupload依賴于commons-io這個包,所以需要下載這兩個包c(diǎn)ommons-fileupload-1.2.1.jar和commons-io-1.3.2.jar,筆者已經(jīng)打包好(點(diǎn)擊下載)</p>
    <p>1、搭建環(huán)境</p>
    <p>創(chuàng)建Web項目,將包導(dǎo)入到項目lib下</p>
    <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn//upload/image/354/923/511/1476061855199183.png" class="lazy" title="1476061855199183.png" alt="Javaweb - upload and download files"></p>
    <p>2、實現(xiàn)文件上傳<br></p>
    <p>(第一種上傳的方法)</p>
    <p>新建upload.jsp頁面</p><pre class='brush:php;toolbar:false;'><%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>upload file</title>
    </head>
    <body>
        <!--這里的<%=request.getContextPath()%>是表示項目的絕對路徑,也就是說不管你以后將項目拷貝到哪個位置,它都會找到準(zhǔn)確的路徑  -->
        <form action="<%=request.getContextPath()%>/uploadServlet" enctype="multipart/form-data" method="post">
            <span>選擇文件:</span><input type="file" name="file1">
            <input type="submit" value="上傳">
        </form>
    </body>
    </html></pre><p>新建處理文件上傳的Servlet</p><pre class='brush:php;toolbar:false;'>package com.load;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    import javax.servlet.ServletContext;
    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("/uploadServlet")
    public class uploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public uploadServlet() {
            super();
        }
        /* fileupload 包中, HTTP 請求中的復(fù)雜表單元素都被看做一個 FileItem 對象;
         * FileItem 對象必須由 ServletFileUpload 類中的 parseRequest() 方法解析 HTTP 請求
         * (即被包裝之后的 HttpServletRequest 對象)出來,即分離出具體的文本表單和上傳文件
         * */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //通過isMultipartContent()方法:分析請求里面是不是有文件上的請求,
            boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            if(isMultipart){
                //創(chuàng)建可設(shè)置的磁盤節(jié)點(diǎn)工廠
                DiskFileItemFactory factory = new DiskFileItemFactory();
                //獲取請求的上下文信息
                ServletContext servletContext = request.getServletContext();
                //緩存目錄,每個服務(wù)器特定的目錄
                File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
                //設(shè)置服務(wù)器的緩存目錄
                factory.setRepository(repository);
                //ServletFileUpload 對象的創(chuàng)建需要依賴于 FileItemFactory 
                //工廠將獲得的上傳文件 FileItem 對象保存至服務(wù)器硬盤,即 DiskFileItem 對象。
                ServletFileUpload upload = new ServletFileUpload(factory);
                try {
                    //解析即被包裝之后的 HttpServletRequest對象,既是分離文本表單和上傳文件(http請求會被包裝為HttpServletRequest)
                    List<FileItem> items = upload.parseRequest(request);
                    for(FileItem item:items){
                        String fieldName = item.getFieldName();    
                        String fileName = item.getName();
                        String contentType = item.getContentType();
                        boolean isInMemory = item.isInMemory();
                        long sizeInBytes = item.getSize();
                        //實例化一個文件
                        //request.getRealPath(獲取真實路徑)
                        File file = new File(request.getRealPath("/")+"/loads"+fileName.substring(fileName.lastIndexOf("\\")+1,fileName.length()));
                        item.write(file);
                    }
                } catch (FileUploadException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    
                    e.printStackTrace();
                }
            }
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }</pre><p>(第二種上傳的方法)</p><p>新建Jsp頁面(同上,只是路徑改變下)</p><pre class='brush:php;toolbar:false;'><%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>upload file</title>
    </head>
    <body>
        <!--這里的<%=request.getContextPath()%>是表示項目的絕對路徑,也就是說不管你以后將項目拷貝到哪個位置,它都會找到準(zhǔn)確的路徑  -->
        <form action="<%=request.getContextPath()%>/uploadservlet1" enctype="multipart/form-data" method="post">
            <span>選擇文件:</span><input type="file" name="file1">
            <input type="submit" value="上傳">
        </form>
    </body>
    </html>
    
    JSP頁面</pre><p>建立Servlet處理上傳</p><pre class='brush:php;toolbar:false;'>package com.load;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    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;
    @WebServlet("/uploadservlet1")
    @MultipartConfig(location="")
    public class uploadservlet1 extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public uploadservlet1() {
            super();
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("utf-8");
            
            //取得上傳文件,讀取文件
            Part part =  request.getPart("file1");
            //定義一個變量去接收文件名
            String filename = null;
            //Content-Disposition: 就是當(dāng)用戶想把請求所得的內(nèi)容存為一個文件的時候提供一個默認(rèn)的文件名
            //Content-Disposition:告訴瀏覽器以下載的方式打開文件
            for (String content : part.getHeader("content-disposition").split(";")) {
                System.out.println(content);
                //取得文件名
                if (content.trim().startsWith("filename")) {
                    //截取文件名
                    filename = content.substring(
                            content.indexOf(&#39;=&#39;) + 1).trim().replace("\"", "");
                }
            }
            //輸出流
             OutputStream out = null;
             //輸入流
             InputStream filecontent = null;
             //File.separator  取得系統(tǒng)的分割線等數(shù)據(jù)
             out = new FileOutputStream(new File("e:/loads" + File.separator + filename));
             int read;
            //獲得一個輸入流
            filecontent = part.getInputStream();
            final byte[] bytes = new byte[1024];
            
            while ((read = filecontent.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
           System.out.println("New file " + filename + " created at " + "/loads");
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    }</pre><p>(第三種上傳的方法)</p><p>這里使用的是jspSmartUpload包上傳下載,筆者認(rèn)為這種上傳下載較為簡單,但是好像不是很多人用,不懂,下載地址在這里(點(diǎn)我下載)</p><p>創(chuàng)建HTML頁面</p><pre class='brush:php;toolbar:false;'><!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>上傳文件</title>
    </head>
    <body>
        <p> </p>
        <p align="center">上傳文件選擇</p>
        <form method="post" Action="../DouploadServlet" enctype="multipart/form-data">
            <table width="75%" border="1" align="center">
                <tr><td><div align="center">
                    1.<input type="file" name="file1" >
                </div></td></tr>
                    <tr><td><div align="center">
                    2.<input type="file" name="file2" >
                </div></td></tr>
                    <tr><td><div align="center">
                    3.<input type="file" name="file3" >
                </div></td></tr>
                    <tr><td><div align="center">
                    <input type="submit" name="Submit" value="上傳他">
                </div></td></tr>
            </table>
        </form>
    </body>
    </html></pre><p>創(chuàng)建Servlet處理上傳文件</p><pre class='brush:php;toolbar:false;'>package com.load;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    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 javax.servlet.jsp.JspFactory;
    import javax.servlet.jsp.PageContext;
    
    import com.jspsmart.upload.File;
    import com.jspsmart.upload.SmartUpload;
    import com.jspsmart.upload.SmartUploadException;
    @WebServlet("/DouploadServlet")
    public class DouploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        public DouploadServlet() {
            super();
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            //新建一個智能上傳對象
            SmartUpload su = new SmartUpload();
            /*
             *  PageContext pageContext;
                HttpSession session;
                ServletContext application;
                ServletConfig config;
                JspWriter out;
                Object page = this;
                HttpServletRequest request, 
                HttpServletResponse response
                其中page對象,request和response已經(jīng)完成了實例化,而其它5個沒有實例化的對象通過下面的方式實例化
                pageContext = jspxFactory.getPageContext(this, request, response,null, true, 8192, true);
             */
            //通過Jsp工廠類獲取上下文環(huán)境
            PageContext pagecontext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);
            //上傳初始化
            su.initialize(pagecontext);
    
            //上傳文件
            try {
                su.upload();
                //將上傳文件保存到指定目錄
                int count = su.save("/share");
                out.println(count+"個文件上傳成功!<br>"+su.toString());
            } catch (SmartUploadException e) {
                e.printStackTrace();
            }
            
            //逐個提取上傳文件信息
            for(int i=0;i<su.getFiles().getCount();i++){
                File file = su.getFiles().getFile(i);
                //如果文件不存在
                if(file.isMissing()) continue;
                
                //顯示當(dāng)前文件信息
                out.println("<table border=1>");
                out.println("<tr><td>表單項名(FieldName)</td></td>"+file.getFieldName()+"</td></tr>");
                out.println("<tr><td>文件長度</td><td>"+file.getSize()+"</td></tr>");
                out.println("<tr><td>文件名</td><td>"+file.getFileName()+"</td></tr>");
                out.println("<tr><td>文件擴(kuò)展名</td><td>"+file.getFileExt()+"</td></tr>");
                out.println("<tr><td>文件全名</td><td>"+file.getFilePathName()+"</td></tr>");
                out.println("</table><br>");
            }
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }</pre><p>3、實現(xiàn)文件下載</p><p>(第一種文件下載)</p><p>注意:該代碼是直接訪問Servlet類的</p><pre class='brush:php;toolbar:false;'>package com.load;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    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;
    
    
    //直接使用Http://localhost:8080/Test1/download進(jìn)行下載,但是這個有缺陷,如果下載文件名中有中文,就會變成亂碼現(xiàn)象!
    @WebServlet("/download")
    public class download extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public download() {
            super();
        }
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             response.setContentType("text/plain;charset=utf-8");
             response.setCharacterEncoding("utf-8");
             response.setHeader("Location","中文.txt");
             response.setHeader("Content-Disposition", "attachment; filename=" + "賬號.txt");
             OutputStream outputStream = response.getOutputStream();
             InputStream inputStream = new FileInputStream("E:/loads"+"/賬號.txt");
             byte[] buffer = new byte[1024];
             int i = -1;
             while ((i = inputStream.read(buffer)) != -1) {
              outputStream.write(buffer, 0, i);
             }
             outputStream.flush();
             outputStream.close();
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }</pre><p>(第二種下載方法)</p><p>新建jsp頁面選擇下載</p><pre class='brush:php;toolbar:false;'><%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>下載</title>
    </head>
    <body>
        <a href="../DoDownloadServlet?filename=呵呵.txt">點(diǎn)擊下載</a>
    </body>
    </html>
    
    Jsp頁面代碼</pre><p>創(chuàng)建Servlet類進(jìn)行下載(注意:該下載如果文件名是中文的話,一樣會出現(xiàn)亂碼現(xiàn)象)</p><pre class='brush:php;toolbar:false;'>package com.load;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    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 javax.servlet.jsp.JspFactory;
    import javax.servlet.jsp.PageContext;
    
    import org.hsqldb.lib.StringUtil;
    
    import com.jspsmart.upload.SmartUpload;
    import com.jspsmart.upload.SmartUploadException;
    
    @WebServlet("/DoDownloadServlet")
    public class DoDownloadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public DoDownloadServlet() {
            super();
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //得到下載文件的名稱
            //String filename = request.getParameter("filename");
            //String filename = new String(FileName.getBytes("iso8859-1"),"UTF-8");
            //新建SmartUpload對象
            SmartUpload su = new SmartUpload();
            PageContext pagecontext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);
            //上傳初始化
            su.initialize(pagecontext);
            //設(shè)置禁止打開該文件
            su.setContentDisposition(null);
            //下載文件
            try {
                su.downloadFile("/listener/"+filename);
            } catch (SmartUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }</pre><p>(第三種下載的方法)</p><p>同上的jsp頁面代碼,這里就不再重復(fù)了。</p><p>新建Serlvet類,實現(xiàn)下載功能(注意:這里文件名就算是中文名,也不會出現(xiàn)亂碼問題了?。?/p><pre class='brush:php;toolbar:false;'>package com.load;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    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 javax.servlet.jsp.JspFactory;
    import javax.servlet.jsp.PageContext;
    
    import org.hsqldb.lib.StringUtil;
    
    import com.jspsmart.upload.SmartUpload;
    import com.jspsmart.upload.SmartUploadException;
    
    @WebServlet("/DoDownloadServlet")
    public class DoDownloadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public DoDownloadServlet() {
            super();
        }
    
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //獲得文件名稱
            String path1 = request.getParameter("filename");
            //獲得路徑名稱
            String path = request.getSession().getServletContext().getRealPath("/listener/"+path1);
             // path是根據(jù)日志路徑和文件名拼接出來的
             File file = new File(path);
             String filename = file.getName();
            try {
                  //判斷是否是IE11
                  Boolean flag= request.getHeader("User-Agent").indexOf("like Gecko")>0;
                //IE11 User-Agent字符串:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
                //IE6~IE10版本的User-Agent字符串:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.0; Trident/6.0)
                   if (request.getHeader("User-Agent").toLowerCase().indexOf("msie") >0||flag){
                       filename = URLEncoder.encode(filename, "UTF-8");//IE瀏覽器
                   }else {
                    //先去掉文件名稱中的空格,然后轉(zhuǎn)換編碼格式為utf-8,保證不出現(xiàn)亂碼,
                    //這個文件名稱用于瀏覽器的下載框中自動顯示的文件名
                    filename = new String(filename.replaceAll(" ", "").getBytes("UTF-8"), "ISO8859-1");
                    //firefox瀏覽器
                    //firefox瀏覽器User-Agent字符串: 
                    //Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
                   }  InputStream fis = new BufferedInputStream(new FileInputStream(path));
                   byte[] buffer;
                   buffer = new byte[fis.available()];
                      fis.read(buffer);
                      fis.close();
                      response.reset();
                      response.addHeader("Content-Disposition", "attachment;filename=" +filename);
                      response.addHeader("Content-Length", "" + file.length());
                      OutputStream os = response.getOutputStream();
                      response.setContentType("application/octet-stream");
                      os.write(buffer);// 輸出文件
                      os.flush();
                      os.close();
                  } catch (IOException e) {
                   e.printStackTrace();
                  }
                    System.out.println(filename);
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }</pre><p><br></p>
    
    
    						</div>
    					</div>
    					<div   id="377j5v51b"   class="wzconShengming_sp">
    						<div   id="377j5v51b"   class="bzsmdiv_sp">Statement of this Website</div>
    						<div>The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn</div>
    					</div>
    				</div>
    
    				<ins class="adsbygoogle"
         style="display:block"
         data-ad-format="autorelaxed"
         data-ad-client="ca-pub-5902227090019525"
         data-ad-slot="2507867629"></ins>
    
    
    
    				<div   id="377j5v51b"   class="AI_ToolDetails_main4sR">
    
    
    				<ins class="adsbygoogle"
            style="display:block"
            data-ad-client="ca-pub-5902227090019525"
            data-ad-slot="3653428331"
            data-ad-format="auto"
            data-full-width-responsive="true"></ins>
        
    
    
    					<!-- <div   id="377j5v51b"   class="phpgenera_Details_mainR4">
    						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
    							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
    								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									src="/static/imghw/hotarticle2.png" alt="" />
    								<h2>Hot Article</h2>
    							</div>
    							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796832397.html" title="Grass Wonder Build Guide | Uma Musume Pretty Derby" class="phpgenera_Details_mainR4_bottom_title">Grass Wonder Build Guide | Uma Musume Pretty Derby</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>1 months ago</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796833110.html" title="Roblox: 99 Nights In The Forest - All Badges And How To Unlock Them" class="phpgenera_Details_mainR4_bottom_title">Roblox: 99 Nights In The Forest - All Badges And How To Unlock Them</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 weeks ago</span>
    										<span>By DDD</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796831605.html" title="Uma Musume Pretty Derby Banner Schedule (July 2025)" class="phpgenera_Details_mainR4_bottom_title">Uma Musume Pretty Derby Banner Schedule (July 2025)</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>1 months ago</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796836699.html" title="RimWorld Odyssey Temperature Guide for Ships and Gravtech" class="phpgenera_Details_mainR4_bottom_title">RimWorld Odyssey Temperature Guide for Ships and Gravtech</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>3 weeks ago</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796831905.html" title="Windows Security is blank or not showing options" class="phpgenera_Details_mainR4_bottom_title">Windows Security is blank or not showing options</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>1 months ago</span>
    										<span>By 下次還敢</span>
    									</div>
    								</div>
    														</div>
    							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
    								<a href="http://m.miracleart.cn/article.html">Show More</a>
    							</div>
    						</div>
    					</div> -->
    
    
    											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
    							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
    								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/hottools2.png" alt="" />
    									<h2>Hot AI Tools</h2>
    								</div>
    								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
    																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title">
    													<h3>Undress AI Tool</h3>
    												</a>
    												<p>Undress images for free</p>
    											</div>
    										</div>
    																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title">
    													<h3>Undresser.AI Undress</h3>
    												</a>
    												<p>AI-powered app for creating realistic nude photos</p>
    											</div>
    										</div>
    																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title">
    													<h3>AI Clothes Remover</h3>
    												</a>
    												<p>Online AI tool for removing clothes from photos.</p>
    											</div>
    										</div>
    																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title">
    													<h3>Clothoff.io</h3>
    												</a>
    												<p>AI clothes remover</p>
    											</div>
    										</div>
    																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title">
    													<h3>Video Face Swap</h3>
    												</a>
    												<p>Swap faces in any video effortlessly with our completely free AI face swap tool!</p>
    											</div>
    										</div>
    																</div>
    								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
    									<a href="http://m.miracleart.cn/ai">Show More</a>
    								</div>
    							</div>
    						</div>
    					
    
    
    					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
    						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
    							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
    								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									src="/static/imghw/hotarticle2.png" alt="" />
    								<h2>Hot Article</h2>
    							</div>
    							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796832397.html" title="Grass Wonder Build Guide | Uma Musume Pretty Derby" class="phpgenera_Details_mainR4_bottom_title">Grass Wonder Build Guide | Uma Musume Pretty Derby</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>1 months ago</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796833110.html" title="Roblox: 99 Nights In The Forest - All Badges And How To Unlock Them" class="phpgenera_Details_mainR4_bottom_title">Roblox: 99 Nights In The Forest - All Badges And How To Unlock Them</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 weeks ago</span>
    										<span>By DDD</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796831605.html" title="Uma Musume Pretty Derby Banner Schedule (July 2025)" class="phpgenera_Details_mainR4_bottom_title">Uma Musume Pretty Derby Banner Schedule (July 2025)</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>1 months ago</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796836699.html" title="RimWorld Odyssey Temperature Guide for Ships and Gravtech" class="phpgenera_Details_mainR4_bottom_title">RimWorld Odyssey Temperature Guide for Ships and Gravtech</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>3 weeks ago</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/1796831905.html" title="Windows Security is blank or not showing options" class="phpgenera_Details_mainR4_bottom_title">Windows Security is blank or not showing options</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>1 months ago</span>
    										<span>By 下次還敢</span>
    									</div>
    								</div>
    														</div>
    							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
    								<a href="http://m.miracleart.cn/article.html">Show More</a>
    							</div>
    						</div>
    					</div>
    
    
    											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
    							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
    								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/hottools2.png" alt="" />
    									<h2>Hot Tools</h2>
    								</div>
    								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
    																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Notepad++7.3.1" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_title">
    													<h3>Notepad++7.3.1</h3>
    												</a>
    												<p>Easy-to-use and free code editor</p>
    											</div>
    										</div>
    																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/toolset/development-tools/93" title="SublimeText3 Chinese version" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Chinese version" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/toolset/development-tools/93" title="SublimeText3 Chinese version" class="phpmain_tab2_mids_title">
    													<h3>SublimeText3 Chinese version</h3>
    												</a>
    												<p>Chinese version, very easy to use</p>
    											</div>
    										</div>
    																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/toolset/development-tools/121" title="Zend Studio 13.0.1" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Zend Studio 13.0.1" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/toolset/development-tools/121" title="Zend Studio 13.0.1" class="phpmain_tab2_mids_title">
    													<h3>Zend Studio 13.0.1</h3>
    												</a>
    												<p>Powerful PHP integrated development environment</p>
    											</div>
    										</div>
    																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title">
    													<h3>Dreamweaver CS6</h3>
    												</a>
    												<p>Visual web development tools</p>
    											</div>
    										</div>
    																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
    											<a href="http://m.miracleart.cn/toolset/development-tools/500" title="SublimeText3 Mac version" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac version" />
    											</a>
    											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
    												<a href="http://m.miracleart.cn/toolset/development-tools/500" title="SublimeText3 Mac version" class="phpmain_tab2_mids_title">
    													<h3>SublimeText3 Mac version</h3>
    												</a>
    												<p>God-level code editing software (SublimeText3)</p>
    											</div>
    										</div>
    																	</div>
    								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
    									<a href="http://m.miracleart.cn/ai">Show More</a>
    								</div>
    							</div>
    						</div>
    										
    
    					
    					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
    						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
    							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
    								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									src="/static/imghw/hotarticle2.png" alt="" />
    								<h2>Hot Topics</h2>
    							</div>
    							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/laravel-tutori" title="Laravel Tutorial" class="phpgenera_Details_mainR4_bottom_title">Laravel Tutorial</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/eyess.png" alt="" />
    											<span>1601</span>
    										</div>
    										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/tiezi.png" alt="" />
    											<span>29</span>
    										</div>
    									</div>
    								</div>
    															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://m.miracleart.cn/faq/php-tutorial" title="PHP Tutorial" class="phpgenera_Details_mainR4_bottom_title">PHP Tutorial</a>
    									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
    										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/eyess.png" alt="" />
    											<span>1502</span>
    										</div>
    										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/tiezi.png" alt="" />
    											<span>276</span>
    										</div>
    									</div>
    								</div>
    														</div>
    							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
    								<a href="http://m.miracleart.cn/faq/zt">Show More</a>
    							</div>
    						</div>
    					</div>
    				</div>
    			</div>
    					</div>
    	</main>
    	<footer>
        <div   id="377j5v51b"   class="footer">
            <div   id="377j5v51b"   class="footertop">
                <img src="/static/imghw/logo.png" alt="">
                <p>Public welfare online PHP training,Help PHP learners grow quickly!</p>
            </div>
            <div   id="377j5v51b"   class="footermid">
                <a href="http://m.miracleart.cn/about/us.html">About us</a>
                <a href="http://m.miracleart.cn/about/disclaimer.html">Disclaimer</a>
                <a href="http://m.miracleart.cn/update/article_0_1.html">Sitemap</a>
            </div>
            <div   id="377j5v51b"   class="footerbottom">
                <p>
                    ? php.cn All rights reserved
                </p>
            </div>
        </div>
    </footer>
    
    <input type="hidden" id="verifycode" value="/captcha.html">
    
    
    
    
    		<link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
    	
    	
    	
    	
    	
    
    	
    	
    
    
    
    
    
    
    <footer>
    <div class="friendship-link">
    <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p>
    <a href="http://m.miracleart.cn/" title="国产av日韩一区二区三区精品">国产av日韩一区二区三区精品</a>
    
    <div class="friend-links">
    
    
    </div>
    </div>
    
    </footer>
    
    
    <script>
    (function(){
        var bp = document.createElement('script');
        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
        }
        else {
            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
        }
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(bp, s);
    })();
    </script>
    </body><div id="i0uk2" class="pl_css_ganrao" style="display: none;"><center id="i0uk2"><del id="i0uk2"><cite id="i0uk2"></cite></del></center><bdo id="i0uk2"><center id="i0uk2"><pre id="i0uk2"></pre></center></bdo><pre id="i0uk2"></pre><kbd id="i0uk2"><dl id="i0uk2"><abbr id="i0uk2"></abbr></dl></kbd><tr id="i0uk2"><menu id="i0uk2"><tfoot id="i0uk2"></tfoot></menu></tr><del id="i0uk2"><nav id="i0uk2"><dd id="i0uk2"></dd></nav></del><tr id="i0uk2"><abbr id="i0uk2"><menu id="i0uk2"></menu></abbr></tr><sup id="i0uk2"><li id="i0uk2"><th id="i0uk2"></th></li></sup><samp id="i0uk2"><acronym id="i0uk2"><nav id="i0uk2"></nav></acronym></samp><menu id="i0uk2"></menu><button id="i0uk2"></button><noframes id="i0uk2"><nav id="i0uk2"><tfoot id="i0uk2"></tfoot></nav></noframes><bdo id="i0uk2"></bdo><blockquote id="i0uk2"><tbody id="i0uk2"><wbr id="i0uk2"></wbr></tbody></blockquote><input id="i0uk2"><cite id="i0uk2"><kbd id="i0uk2"></kbd></cite></input><s id="i0uk2"></s><dd id="i0uk2"></dd><tfoot id="i0uk2"></tfoot><strong id="i0uk2"><sup id="i0uk2"></sup></strong><kbd id="i0uk2"><cite id="i0uk2"><center id="i0uk2"></center></cite></kbd><cite id="i0uk2"></cite><tr id="i0uk2"></tr><dl id="i0uk2"></dl><li id="i0uk2"><tfoot id="i0uk2"><del id="i0uk2"></del></tfoot></li><blockquote id="i0uk2"></blockquote><bdo id="i0uk2"></bdo><em id="i0uk2"></em><samp id="i0uk2"><noframes id="i0uk2"><dfn id="i0uk2"></dfn></noframes></samp><samp id="i0uk2"></samp><nav id="i0uk2"><tfoot id="i0uk2"><tr id="i0uk2"></tr></tfoot></nav><strong id="i0uk2"><td id="i0uk2"><button id="i0uk2"></button></td></strong><td id="i0uk2"></td><dfn id="i0uk2"><li id="i0uk2"><th id="i0uk2"></th></li></dfn><cite id="i0uk2"><blockquote id="i0uk2"><tbody id="i0uk2"></tbody></blockquote></cite><dd id="i0uk2"></dd><em id="i0uk2"><pre id="i0uk2"><input id="i0uk2"></input></pre></em><button id="i0uk2"></button><td id="i0uk2"></td><fieldset id="i0uk2"></fieldset><delect id="i0uk2"></delect><tfoot id="i0uk2"><pre id="i0uk2"><nav id="i0uk2"></nav></pre></tfoot><fieldset id="i0uk2"></fieldset><pre id="i0uk2"><xmp id="i0uk2"><small id="i0uk2"></small></xmp></pre><dl id="i0uk2"></dl><acronym id="i0uk2"><dd id="i0uk2"><cite id="i0uk2"></cite></dd></acronym><abbr id="i0uk2"></abbr><object id="i0uk2"></object><noframes id="i0uk2"><dfn id="i0uk2"><acronym id="i0uk2"></acronym></dfn></noframes><menu id="i0uk2"></menu><option id="i0uk2"></option></div>
    
    </html>