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

溫馨提示×

溫馨提示×

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

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

java文件流接口和下載的方法是什么

發布時間:2021-11-16 11:33:59 來源:億速云 閱讀:495 作者:iii 欄目:大數據

本篇內容介紹了“java文件流接口和下載的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

java文件流接口

package com.rainmanqqst.controller.filestream;

import com.Ostermiller.util.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;

/**
 * @author RAINMANQQST
 * @date 2019-07-15 14:52
 * @description
 */
@RestController
@RequestMapping("/fille")
public class FileController {

    private static Logger logger = LoggerFactory.getLogger(FileController.class);

    /**
     * 將直接資源請求接口地址轉為文件流接口
     * filePath為base64加密的文件地址
     * @param filePath
     * @param request
     * @param response
     */
    @RequestMapping(value="/resource/{filePath}")
    public void achieveResource(@PathVariable("filePath") String filePath, HttpServletRequest request, HttpServletResponse response){
        try {
            String path = Base64.decode(filePath);
            logger.info("resource path is "+path);

            File file = new File(filePath);
            logger.info("fileName : "+file.getName());

            response.setHeader("Content-disposition", "attachment; filename="+file.getName());
            response.setContentType("application/octet-stream;charset=UTF-8");
            response.setHeader("Content-Length",file.length()+"");

            InputStream inputStream = new FileInputStream(file);
            ServletOutputStream servletOutputStream = response.getOutputStream();
            int len = 0;
            byte[] buffer = new byte[1024];
            while((len=inputStream.read(buffer))>0){
                servletOutputStream.write(buffer, 0, len);
            }
            servletOutputStream.flush();
            inputStream.close();
            servletOutputStream.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

JS下載代碼

<html>
<head>
    <%--<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">--%>
    <script type="text/javascript">
        function exportFile() {    // name=文件名, blob=文件二進制對象
            //  獲取時間戳
            var timestamp=new Date().getTime();
            // 獲取XMLHttpRequest
            var xmlResquest = new XMLHttpRequest();
            //  發起請求
            xmlResquest.open("POST", "http://localhost:8086/rainmanqqst/api/system/resource/aHR0cHM6Ly9pbWcxLmRvdWJhbmlvLmNvbS92aWV3L3Bob3RvL2wvcHVibGljL3AxNDIyMDcxNjA4LndlYnA=", true);
            // 設置請求頭類型
            xmlResquest.setRequestHeader("Content-type", "application/json");
            //  設置請求token
            //xmlResquest.setRequestHeader(
            //    "Authorization",
            //    Vue.cookie.get('token')
            //);
            xmlResquest.responseType = "blob";
            //  返回
            xmlResquest.onload = function(oEvent) {
                var content = xmlResquest.response;
                alert(content);
                // 組裝a標簽
                var elink = document.createElement("a");
                // 設置下載文件名
                elink.download = timestamp + ".png";
                elink.style.display = "none";
                var blob = new Blob([content]);
                elink.href = URL.createObjectURL(blob);
                document.body.appendChild(elink);
                elink.click();
                document.body.removeChild(elink);
            };
            xmlResquest.send();
        }


    </script>
</head>

<body>
<input onclick="javascript:exportFile()" type="button" value="test" >
</body>
</html>

“java文件流接口和下載的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

夏津县| 安仁县| 普兰县| 榕江县| 新郑市| 来安县| 安丘市| 苏州市| 涟水县| 青冈县| 兴海县| 蓝山县| 兴安盟| 乐昌市| 城市| 福安市| 枝江市| 泾阳县| 南京市| 神农架林区| 隆林| 健康| 玛沁县| 梅河口市| 永新县| 枣庄市| 旺苍县| 泾川县| 勐海县| 乌拉特前旗| 莎车县| 洛川县| 甘谷县| 化州市| 武宁县| 河津市| 图木舒克市| 九龙坡区| 嘉兴市| 小金县| 玉环县|