2016-03-31 10 views
1

i jqueryでダウンロードファイルに問題があります。ファイルをダウンロードjqueryからjava

私はJavaコードでリクエストを送信するpost関数を持っています。

ファイルを返信しますが、これはダウンロードされません。

入力

 <input type="button" id="export-csv" value="Export result in CSV"/> 

のHTML jqueryのコード

$("#export-csv").click(function() { 

     var request=$.ajax({ 
      method: "POST", 
      url: 'user/writeCsv', 
      data: $("#search-form").serialize(), 
      dataType: "text/csv" 
     }).done(function(data) { 
      window.location.href = (data); 
     }); 


//  $.post("user/writeCsvToReturn", $("#search-form").serialize()) 
    }); 

Javaコード

@RequestMapping(value="/user/writeCsv",method=RequestMethod.POST) 
    public FileWriter writeCSVFile(HttpServletResponse response,ServerSearchCommand ssc, Model model, BindingResult result) throws IOException { 

FileWriter fileWriter= new FileWriter("/tmp/searchcsv.csv"); 
fileWriter.flush(); 

    //WRITE DATA FILE 


    fileWriter.close(); 
    return fileWriter; 
} 
+0

ありがとう、非常に! – Dev

答えて

0

単にあなたがすることはできません。 Ajaxではセキュリティ上の理由からファイルをダウンロードできません。フォームリクエストを送信するだけです。

+0

こんにちは:)どうすればいいですか? – Dev

+0

ajaxを経由せず、sbmit形式。 –

+0

@Marco ajaxは直接サポートしていませんが、回避策があります – Panther

1

フォームを送信したくない場合は、あなたがこの作品を持つことができるの周りget要求におけるレスポンスオブジェクト内のファイルの書き込み: - フロントエンドには

@RequestMapping(value="/user/writeCsv",method=RequestMethod.Get) 
public void writeCSVFile(HttpServletResponse response,ServerSearchCommand ssc, Model model, BindingResult result) throws IOException { 

OutputStream outStream = response.getOutputStream(); 
// Write data to this outStream 
outStream.close(); 
} 

、サイドアペンドファイルのiFrameにすると、iFrameを作りますスティ=表示:なし: -

var url = contextPath + "/user/writeCsv"; 
    var hiddenIFrameID = 'frameid', 
    iframe = document.getElementById(hiddenIFrameID); 
    if (iframe === null) { 
     iframe = document.createElement('iframe'); 
     iframe.id = hiddenIFrameID; 
     iframe.style.display = 'none'; 
     document.body.appendChild(iframe); 
    } 
    iframe.src = url; 
関連する問題