2016-03-31 24 views
1

i Download dosyası ile ilgili sorun jquery.Dosya İndir jaquery tarafından java

Java kodunda istek gönderen bir post işlevim var.

Dosyayı iade ediyorum, ancak bu indirilemiyor.

Girdi

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

Html-jquery Kod

$("#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 kodu

@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

Çok teşekkürler! – Dev

cevap

0

Basitçe bunu yapamazsınız. Ajax ile güvenlik nedeniyle bir dosya indiremezsiniz. Tek yapabileceğiniz bir form isteği göndermektir.

+0

Merhaba :) nasıl yapabilirim? – Dev

+0

ajax ile değil, form sbmit. –

+0

@Marco ajax doğrudan desteklemiyor, ancak etrafta çalışma var – Panther

1

formu göndermek istemiyorsanız, bu işi olabilir etrafında olsun istekte yanıt nesnesine dosyası yazmak: - Ön ucunda

@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(); 
} 

, yan ekleme dosyası iFrame ve iFrame yapmak stye = görüntü: yok: -

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; 
İlgili konular