欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何從linux服務(wù)器下載文件

 更新時間:2022年01月28日 14:11:03   作者:Summer_DM  
這篇文章主要介紹了java如何從linux服務(wù)器下載文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

最近做項目,使用的技術(shù)較老,前端用的架構(gòu)是jsp,主要技術(shù)是jquery、js、css、html等,后端用到的主要是springmvc、存儲過程等。

下面是一個文件下載的簡單實現(xiàn)。主要是客戶在瀏覽器點擊一個pdf文件,進(jìn)行下載。改文件存在于公司的服務(wù)器上。

一、前端代碼

1、html代碼

 <div class="border-gb-title">項目文件</div>
    <div class="grey-card jus-c ptb30 flex">
        <div class="tc mlr50 cupointer" onclick="getProjectFiles(1)"><img src="/res/images/file.png">
            <div class="mt5 fs16">合同</div>
        </div>
        <div class="tc mlr50 cupointer" onclick="getProjectFiles(2)"><img src="/res/images/file.png">
            <div class="mt5 fs16">計劃說明書</div>
        </div>
        <div class="tc mlr50 cupointer" onclick="getProjectFiles(3)"><img src="/res/images/file.png">
            <div class="mt5 fs16">風(fēng)險說明書</div>
        </div>
        <div class="tc mlr50 cupointer" onclick="getProjectFiles(6)"><img src="/res/images/file.png">
            <div class="mt5 fs16">服務(wù)協(xié)議</div>
        </div>
    </div>

2、js代碼

 //獲取文件,主要是從數(shù)據(jù)庫獲取到:文件名、文件路徑
    function getProjectFiles(type) {
        var fileParam = {
            pageNo: 1,
            pageSize: 10,
            xmId: ${detail[0]["項目ID"]},
            cxlx: type,
        };
        $.ajax({
            url: "/prod/getProjectFiles",
            type: "POST",
            data: fileParam,
            dataType: "JSON",
            success: function (ret) {
                if (ret && ret['code'] > 0) {
                    debugger
                    //渲染界面
                    var dataList = ret['list'];
                    download(dataList[0]["附件名"],dataList[0]["附件路徑"]);
                }
            }
        })
    }
//下載文件,調(diào)用后端接口
    function download(fileName,filePath){
        window.open("/downloadTwo?fileName="+encodeURI(fileName)+"&downUrl="+filePath);
        return ;
    }

3、css樣式

前端的所有樣式都是使用layui架構(gòu)的。

二、后臺代碼

1、獲取文件

主要是,調(diào)用存儲過程,去數(shù)據(jù)庫獲取文件名和文件路徑,后面用于下載。

 /**
     * 獲取項目文件
     *   I_CXLX       IN NUMBER, --查詢類型 1|信托合同 2|信托計劃說明書3|認(rèn)購風(fēng)險說明書 5|隱私協(xié)議|6用戶服務(wù)協(xié)議
     *   I_XSXM      IN NUMBER --發(fā)行方案id
     * @param request
     * @param response
     * @param modelMap
     * @return
     */
    @RequestMapping(value = "/getProjectFiles",method = RequestMethod.POST)
    @ResponseBody
    public DataResultSet getProjectFiles(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap){
        int pageNo = ParamUtils.getInt(request, "pageNo", 1); // 頁碼
        int pageSize = ParamUtils.getInt(request, "pageSize", 10); // 取得顯示條數(shù)
        String cxlx = ParamUtils.getString(request, "cxlx", ""); // 查查詢類型 1|信托合同 2|信托計劃說明書3|認(rèn)購風(fēng)險說明書 5|隱私協(xié)議|6用戶服務(wù)協(xié)議
        String xmId = ParamUtils.getString(request, "xmId", ""); //發(fā)行方案id
        DataResultSet productHistory = prodService.getProjectFiles(pageNo,pageSize,cxlx,xmId);
        return productHistory;
    }

2、開始下載

 /**
     * 附件下載
     *
     * @param request
     * @param response
     */
    @RequestMapping("/downloadTwo")
    public void downloadFileTwo( HttpServletRequest request, HttpServletResponse response) {
        String fileName = request.getParameter("fileName");
        String downUrl = request.getParameter("downUrl");
        goToDownload(request, response, downUrl, fileName);
    }
    /**
     * 下載
     *
     * @param request
     * @param response
     * @param downUrl  下載的路徑
     * @param fjmc     下載文件的名稱
     */
    private void goToDownload(HttpServletRequest request, HttpServletResponse response, String downUrl, String fjmc) {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/x-msdownload");
        try {
            String encodenickname = URLEncoder.encode(fjmc,"UTF-8");//轉(zhuǎn)Unicode不然ie會亂碼
            response.setHeader("Content-Disposition", "attachment;fileName=" + new String(encodenickname.getBytes("UTF-8"), "ISO8859-1"));
            //這里注掉的代碼是本地測試的
//            String path = request.getSession().getServletContext().getRealPath("/");
//            String ATTACH_PATH= AppConfig.getInstance().getProperty("attach.base","");
//            if (StringUtils.isNotEmpty(ATTACH_PATH)) {
//                path = ATTACH_PATH;
//            }
//            logger.debug("=path===" + path);
            File file = new File( downUrl);
            if (!file.exists()) {
                response.sendError(404, "File not found!");
                return;
            }
            long fileLength = file.length();
            response.setHeader("Content-Length", String.valueOf(fileLength));
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
            BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
            byte[] buff = new byte[2048];
            int bytesRead;
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
            bis.close();
            bos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

三、效果

在這里插入圖片描述

直接點擊文件圖片或者文件,就可以下載。

在這里插入圖片描述

上面測試,是在谷歌瀏覽器,火狐,IE也測試過了,親測有效。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切

    Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切

    這篇文章主要給大家介紹了關(guān)于Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java  解決死鎖的方法實例詳解

    Java 解決死鎖的方法實例詳解

    這篇文章主要介紹了java 多線程死鎖詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • springboot內(nèi)置的tomcat支持最大的并發(fā)量問題

    springboot內(nèi)置的tomcat支持最大的并發(fā)量問題

    這篇文章主要介紹了springboot內(nèi)置的tomcat支持最大的并發(fā)量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 一行命令同時修改maven項目中多個module的版本號的方法

    一行命令同時修改maven項目中多個module的版本號的方法

    這篇文章主要介紹了一行命令同時修改maven項目中多個module的版本號的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 詳解使用Spring Boot的AOP處理自定義注解

    詳解使用Spring Boot的AOP處理自定義注解

    本篇文章主要介紹了詳解使用Spring Boot的AOP處理自定義注解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • SpringMVC異常處理的三種方式小結(jié)

    SpringMVC異常處理的三種方式小結(jié)

    本文主要介紹了SpringMVC異常處理的三種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 什么是jsoup及jsoup的使用

    什么是jsoup及jsoup的使用

    jsoup是一款基于Java的HTML解析器,它提供了一套非常省力的API,不但能直接解析某個URL地址、HTML文本內(nèi)容,而且還能通過類似于DOM、CSS或者jQuery的方法來操作數(shù)據(jù),所以?jsoup?也可以被當(dāng)做爬蟲工具使用,這篇文章主要介紹了什么是jsoup及jsoup的使用,需要的朋友可以參考下
    2023-10-10
  • SpringBoot 中使用JSP的方法示例

    SpringBoot 中使用JSP的方法示例

    本篇文章主要介紹了SpringBoot 中使用JSP的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Spring中IOC和AOP的深入講解

    Spring中IOC和AOP的深入講解

    這篇文章主要給大家介紹了關(guān)于Spring中IOC和AOP的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • java實現(xiàn)合并圖片的方法示例

    java實現(xiàn)合并圖片的方法示例

    這篇文章主要介紹了java實現(xiàn)合并圖片的方法,結(jié)合具體實例形式分析了java基于圖片的讀取、設(shè)置、生成等操作實現(xiàn)圖片合并功能的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02

最新評論