Java Webインプリメンテーションブラウザを使用してサーバからファイルをダウンロード(バックグラウンド)

5264 ワード

Java Webインプリメンテーションは、ブラウザを使用してサーバからファイルをダウンロードします.次の2つの状況のダウンロードを実現します.
需要(一):
1、ユーザーはページにフォームを記入する.2、記入が完了したら、ダウンロードを選択し、フォームの内容をバックグラウンドに送ります.3、バックグラウンドは内容によって一つのファイルを生産し、フロントエンドに送る.4、フロントエンドはファイルをローカルにダウンロードしました.この要件は、簡単に言えば、ユーザーがページに内容を記入し、内容をファイルの形式に変更することです.
バックグラウンド設計の考え方:
1、まずフロントエンドから送られてきた内容を手に入れる.2、内容を解析し、バッファに保存する.3、応答ヘッダを設定します.4、バッファ内の内容をストリームで書く.
コード実装:
 public void download(HttpServletResponse response){
        JSONObject json = new JSONObject();
        /*         JSON       */
        json.put("A","1");
        json.put("B","2");
        json.put("C","3");
        /*   JSON, JSON        */
        StringBuilder sb = new StringBuilder();
        Iterator it = json.keys();
        while(it.hasNext()){
            String key =  (String)it.next();
            String value = (String)json.get(key);
            sb.append(key).append("=").append(value).append("
"
); } /* ContentType , , */ response.setContentType("application/multipart/form-data"); /* : ( a.ini) */ response.setHeader("Content-Disposition", "attachment;filename=a.ini"); try{ /* */ OutputStream os = response.getOutputStream(); os.write(sb.toString().getBytes()); os.flush(); os.close(); }catch (IOException ioe){ ioe.printStackTrace(); } }

需要(二):
1、ユーザーはダウンロードするファイルを指定します.2、ファイルをローカルにダウンロードしました.
バックグラウンド設計の考え方:
1、まず、フロントエンドでダウンロードするファイルを取得します.2、サーバー上のファイルのパスを見つけます.3、ファイルをメモリ4に読み込み、ファイルをストリームで書き出します.
コード実装:
    public void download() throws  IOException{
        //       
        File file = new File("/home/a.txt");

        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();
        }
    }

落ち着いて、焦らないでください.あなたが望んでいるのは、歳月があなたにあげます.