91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTML的a標簽無法下載文件的解決方案

發布時間:2020-07-04 04:30:03 來源:網絡 閱讀:12896 作者:tftu 欄目:web開發
   web端最簡單的下載文件方式是采用html中a標簽形式直接進行下載,只需要將文件的全路徑賦值給href,同時給download屬性賦予文件名即可。但是有些瀏覽器(chrome、firefox、IE edge等)可以下載,有些瀏覽器(IE8-11等)則在網頁上直接打開,有時候還會是亂碼。所以為了徹底解決這個,需要在服務器端想辦法進行解決。
   在spring框架下,通過href鏈接下載時,設置Servlet攔截相應的url,然后進入后臺進行相應的輸入。
         示例代碼如下:
         public void fileOutputStream(HttpServletRequest req, HttpServletResponse resp) 
                throws ServletException, IOException {
            String filepath = req.getRequestURI();
            int index = filepath.indexOf(Global.USERFILES_BASE_URL);
            if(index >= 0) {
                filepath = filepath.substring(index + Global.USERFILES_BASE_URL.length());
            }
            try {
                filepath = UriUtils.decode(filepath, "UTF-8");
            } catch (UnsupportedEncodingException e1) {
                logger.error(String.format("解釋文件路徑失敗,URL地址為%s", filepath), e1);
            }
            File file = new File(Global.getUserfilesBaseDir() + Global.USERFILES_BASE_URL + filepath);
            try {
                resp.setContentType("application/x-msdownload; charset=utf-8");  
                resp.setHeader("Content-Disposition", "attachment;");
                FileCopyUtils.copy(new FileInputStream(file), resp.getOutputStream());
                return;
            } catch (FileNotFoundException e) {
                req.setAttribute("exception", new FileNotFoundException("請求的文件不存在"));
                req.getRequestDispatcher("/WEB-INF/views/error/404.jsp").forward(req, resp);
            }
        }

        關鍵代碼:resp.setHeader("Content-Disposition", "attachment;");這里指定輸出是附件。這樣的話,就明確的告訴瀏覽器這是在下載附件,從而解決了不同瀏覽器可能會出現直接打開文件甚至亂碼問題。
        對于tomcat而言,查看conf/web.xml,尋找所有的mime類型,如果存在你需要下載的文件的話,即不用進行修改,如果不存在的話,需要添加,然后重啟服務器,給a標簽賦值要下載文件的全路徑即可(比如xls的文件就不用修改配置,而rar就需要配置,zip也不需要配置);注意,如果路徑中包含中文的話,還需要稍微改動,否則可能會無法下載,需要在Server.xml文件中,在http端口設置處,需要加上編碼,如下:
        <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
        注意URIEncoding賦值為UTF-8,。因為對于get方式請求過來的編碼,若文件路徑中存在中文,則可能出現亂碼。對于post請求過來的編碼,可以用傳統的request.setContent**方式進行配置。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白朗县| 桓台县| 东台市| 柳林县| 怀宁县| 阜平县| 油尖旺区| 镇雄县| 五河县| 井陉县| 吉木萨尔县| 普陀区| 阿瓦提县| 平舆县| 双峰县| 融水| 乌兰察布市| 乳源| 丽江市| 叶城县| 精河县| 禄丰县| 华亭县| 错那县| 永定县| 鱼台县| 贵阳市| 阜宁县| 彭阳县| 安岳县| 邵阳县| 新闻| 余江县| 阿拉善左旗| 台东县| 福泉市| 霍州市| 施甸县| 麻阳| 灵石县| 南丹县|