簡體   English   中英

無法將大型HTML內容發布到Chrome上的服務器

[英]Unable to POST large html content to server on Chrome

我正在嘗試通過POST請求發送HTML內容,但使用Chrome無法在服務器端傳遞HTML內容。 當我使用Mozilla時,在我的jsp中獲得請求數據。 當HTML內容較小時,這在兩種瀏覽器中均適用。 我正在使用Apache FOP使用此HTML內容生成PDF。

var iframe = document.createElement('iframe');
iframe.setAttribute('name','eyeframe');
document.body.appendChild(iframe);
var myform = document.createElement('form');
document.body.appendChild(myform);
myform.setAttribute('action','myJspToRenderHtmlAsPdf.jsp');
myform.setAttribute('method','post');
myform.setAttribute('target','eyeframe');

var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "htmlContent");
hiddenField.setAttribute("value", strHTML);
myform.appendChild(hiddenField);
myform.submit();

我將HTML分為多個塊,並將它們發布並在jsp中重新加入它們。 使用chrome和ie的這種方法也會失敗。

chrome中的輸入(或整個Webkit)有字符數限制-524288,您可以通過在控制台中輸入進行測試:

var el = document.createElement("input");
el.maxLength

為什么不使用簡單的FormData

var formData = new FormData();
formData.append("htmlContent", strHTML);
var request = new XMLHttpRequest();
request.open("POST", "myJspToRenderHtmlAsPdf.jsp");
request.send(formData);

有一些時間來編寫簡單的演示。 服務器響應生成為PDF:

<a href="#" id="test">Download</a>
<script>

var formData = new FormData();
formData.append("htmlContent", 'test');
var request = new XMLHttpRequest();
request.responseType = 'blob';
request.open("POST", "myJspToRenderHtmlAsPdf.jsp");

request.onload = function(event) {
    if (request.status == 200) {
      var blob = new Blob([request.response], {type: 'application/pdf'});
      var url = URL.createObjectURL(blob);
      var link = document.querySelector('#test');
      link.setAttribute('href', url);
    } else {
      // Handle error
    }
  };

request.send(formData, true);
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM