0

私の問題は、ファイルを作成してユーザーにストリーミングするプログラムがあり、2つの問題があることです。

1)最初にファイル名とタイプ(x.sql)を変更する方法

2)ファイルの作成中に例外が発生した場合、サーブレットの出力ストリームに書き込みたいときにメソッドの戻り値の型が無効であるため、ユーザーをエラーページにリダイレクトしたい!

私のプログラムは次のようなものです:

    @RequestMapping(value = "/test/{jobid}")
   public void dumpData(@PathVariable("jobid") long jobid, HttpServletResponse response) {
     try {

        response.setContentType("application/octet-stream");
        ServletOutputStream out = response.getOutputStream();
        String downloadOutput = "";
        // AM I ABLE TO SET FILENAME SO THE USER DOWNLOAD THE FILE WITH THAT NAME ?
        // DOES SETHEADER HELP ME IN THIS CASE ?

        ... (making downloadOutput String by values coming from somewhere)

        out.write(downloadOutput.getBytes("UTF-8"));
        out.flush();
        out.close();
     } catch(SomeException e){
         //WHEN THE RETURN TYPE IS VOID HOW TO REDIRECT USER TO ERROR PAGE IN CASE OF SOME PROBLEM ? 
        //(INFO:)IF WE DEFINE STRING AS RETURN TYPE THE PROGRAM WILL GET EXCEPTION 
     }
4

2 に答える 2

2

最初の質問への回答:

response.setHeader( "Content-Disposition", "attachment;filename=" + filename );
//for zip file
response.setContentType("application/zip");

さまざまなコンテンツ タイプの MIME タイプのリストを次に示します。

ここで解決策を見つけました。戻り値の型を文字列に変更し、エラーの場合はエラー ビュー名を返すことができます。それ以外の場合は null を返します。リンクから私が理解したのは、 null を返すことと戻り値の型 void が似ているということです。

于 2013-04-28T05:21:24.820 に答える
1

response.sendRedirect(errorPage) の使用を妨げているものは何ですか?

于 2013-04-28T06:05:29.007 に答える