2016-08-11 71 views
0

我需要爲頁面中的相應表格下載CSV文件。我不需要在下載之後執行任何操作,只需說出口並將數據下載到CSV文件即可。 後端代碼已準備就緒,但我如何使用POST進行操作。使用POST FORM/AJAX下載文件?

我提到了很多建議,並嘗試使用window.open,但POST似乎是一個問題。 最後試圖與表單創建,但現在的問題是,我得到

"415 unsupported media type" 

我的請求頭

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-US,en;q=0.5 
Connection keep-alive 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 
Content-Length 112 
Content-Type application/x-www-form-urlencoded 

現在我的理解是解決這個問題我的內容類型應設置爲JSON,這是在FORM POST中不可能?

1)我們有更好的方法來下載文件(對於使用HTML和JS的單頁APP)?沒有圖書館,請簡單的Javascript方式,獲得圖書館批准是不可能在我的項目。

2)如何解決上述問題,如果不是我的其他選項?

代碼:

var form = document.createElement("form"); 
    form.id = formId; 
    form.action = url; 
    form.method = method || "POST"; 
    form.target = target || "_self"; 
    if (data) { 
     for (var key in data) { 
      var input = document.createElement("textarea"); 
      input.name = key; 
      input.value = typeof data[key] === "object" ? JSON.stringify(data[key]) : data[key]; 
      form.appendChild(input); 
     } 
    } 
    form.style.display = 'none'; 
    $('#' + containerId).append(form); 
    if (!self.isEmptyObject(data)) { 
     form.submit(); 
    } 

回答

-1

在這裏,我做了一個例子,確保有利於所有:

<form name="myform" id="myform" method="post" enctype= "multipart/form-data"> 
    <input name="uploadData" id="uploadData" type="file"/> 
</form> 

$("#uploadData").change(function (e) { 
    $('.loading').show(); 
     var file_data = $('#uploadData').prop('files')[0]; 
     var form_data = new FormData(); 
     var csvhtml = ''; 
     form_data.append('file', file_data); 
     $.ajax({ 
      url: '{{path('bulk_request_update_upload')}}', 
      dataType: 'text', 
      cache: false, 
      contentType: false, 
      processData: false, 
      data: form_data, 
      type: 'post', 
      success: function (data) { 
     } 
    }); 
}); 
+0

此代碼用於上傳。 –

0

從REST終點所需的修復

包括下面的代碼

@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED}) 

並將參數更改爲

public javax.ws.rs.core.Response getExceptionDetailLogs(final @FormParam("param1") String param1, 
    final @FormParam("param2") String param2) throws Exception { 
    .... 
}