1

OpenCsv API を使用していますが、問題が発生しました。コードは次のとおりです。

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        try {
            List<UserRegData> userRegDataList = new ArrayList<UserRegData>();
            HttpSession session = request.getSession();
            userRegDataList = (List<UserRegData>) session.getAttribute("referralData");
            List<String[]> dataToWrite = new ArrayList<String[]>();
            String csv = "E:\\carewave_backup\\csv\\UserReferral.csv";
            CSVWriter writer = new CSVWriter(new FileWriter(csv));

            for (UserRegData obj : userRegDataList) {
                dataToWrite.add(new String[]{obj.getReferred_by_name(), obj.getInvitee_name(), obj.getInvitee_email(), obj.getInvitee_date(), obj.getIsInviteeRegistered(), obj.getDate_of_invitee_registered()});
            }
            writer.writeAll(dataToWrite);
            writer.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            out.close();
        }
    }

このサーブレットは、基本的にセッションからリストを取得し、それを csv ファイルに書き込みます。このサーブレットは、ユーザーが [csv のダウンロード] ボタンをクリックした後にトリガーされます。必要なのは、ブラウザーがダウンロード ダイアログを表示することです。それを書き込まずに csv 形式でダウンロードする方法はありますか最初にファイルするには?

4

1 に答える 1

1

サーバー上の一時ファイルに最初に書き込むことなく、サーバー上の出力をクライアントに直接ストリーミングする方法について質問していると思います。

最初にデータをファイルに書き込む必要はありません。

  1. レスポンスのコンテンツ タイプをtext/csv
  2. getOutputStream()応答オブジェクトを呼び出す
  3. dataToWriteの内容を個々の行として出力ストリームに書き込みます

ディスクファイルは必要ありません。

于 2013-10-22T07:14:22.957 に答える