2017-04-03 8 views
0

これは非常に基本的な質問ですが、実装が非常に多く、動作させることができません。サーブレットから生成されたzipをダウンロードしてください

私のプロジェクトでは、ユーザがボタンをクリックすると、サーブレット(AJAX POSTを介して呼び出されます)でzipファイルを生成しています。もちろん、そのファイルをユーザーにダウンロードさせたいと思っています。ここで

は、要求のための私のコードです:

<button type="button" class="btn btn-info btn-lg" onclick="getZip();"> 
    <span class="glyphicon glyphicon-download"></span> Download clusters (.zip) 
</button> 

はここPOSTためAJAXです:

function getzip() { 
    $.ajax({ 
     url:'GetZipServlet', 
     type:'GET', 
    }); 
} 

そしてこれはダウンロードのための私のコードです:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     System.out.println("Downloading clusters.zip"); 

     /* Generate the directory on the server, then zip it. */ 
     ClinicoGenomic.getInstance().clustersToFiles(); 
     ClinicoGenomic.getInstance().zipClusters(); 
     System.out.println("Done generating the .zip"); 

     String parent_dir = System.getProperty("catalina.base"); 
     String filename = "clusters.zip"; 



     response.setContentType("application/zip"); 
     response.setHeader("Content-Disposition", "attachment;filename=\"" + filename); 
     ZipOutputStream zipStream = new ZipOutputStream(response.getOutputStream()); 

     ZipInputStream fi = new ZipInputStream(new FileInputStream(parent_dir + "/" + filename)); 
     int i; 
     while ((i = fi.read())!=-1) 
      zipStream.write(i); 

     zipStream.close(); 
     fi.close(); 
     System.out.println(".zip file downloaded at client successfully"); 
    } 

私が手私のコンソールの正しいメッセージ、まで3210。しかし、ダウンロードは開始しません。何がここで間違っている可能性が???

答えて

0

あなたは正しくこのように、あなたは単にあなたのAJAX呼び出しの後にそれを処理する必要があり、応答を送信する場合:

$.ajax({ 
    url:'GetZipServlet', 
    type:'GET', 
    success: function (response) { 
    //handle the response here 
    } 
}); 
+0

ご回答いただきありがとうございます。それはうまくいかなかった – Mixalis

関連する問題