4
@RequestMapping( method = RequestMethod.POST, value = DataController.RESOURCE_PATH + "/file", headers = "content-type=application/json" )
@ResponseBody
public void export( @RequestBody JSONObject json, HttpServletResponse response ) throws IOException
{
    String myString = "Hello";
}

文字列は の内部で生成されますController。私が望むのは、ユーザーが .xml を含むファイルを保存できるウィンドウをユーザーに送り返すことですmyString

$.ajax({
    type: "POST",
    url: url,
    data: JSON.stringify(createJSON()),
    contentType: "application/json",
    success: function(response)
    {
        console.log("Exported JSON: " + JSON.stringify(createJSON()));
        console.log(response);
    },
    error: function()
    {
        console.log(arguments);
        alert("Export process failed.");
    }
});

この現在の状態では明らかに機能せず、私は現時点で立ち往生しています。

4

3 に答える 3

13

ここにサンプルがあります:

@RequestMapping( method = RequestMethod.POST, 
    value = DataController.RESOURCE_PATH + "/file", 
    headers = "content-type=application/json" )
public void export( @RequestBody JSONObject json, HttpServletResponse response ) 
    throws IOException {
    String myString = "Hello";
    response.setContentType("text/plain");
    response.setHeader("Content-Disposition","attachment;filename=myFile.txt");
    ServletOutputStream out = response.getOutputStream();
    out.println(myString);
    out.flush();
    out.close();
}

PS: ブラウザーがテキスト ファイルをキャッシュしないように、(パラメーターなどとして) URL にランダムなものを入れることを忘れないでください。

于 2013-07-17T18:08:00.730 に答える
0

filesaver.jsの使用をお勧めします。

次に、ソリューションは次のようになります。

var text = JSON.stringify(createJSON());  
var blob = new Blob([text], {type: "text/plain; charset=utf-8"});                           
saveAs(blob, "myfile.txt");  
于 2016-06-16T05:49:31.577 に答える
0

MediaType.APPLICATION_OCTET_STREAMファイルを返すには、応答タイプとしてを使用する必要があります。

于 2013-07-17T18:00:43.210 に答える