2012-03-08 4 views
2

내 캔버스를 base64 문자열로 표시했습니다. 서버가 데이터를 사용하여 PDF 문서를 만들 수 있도록이 문자열을 서버에 전달하고 싶습니다.캔버스 dataURL을 PDF로 내보내기 - 방법은? DataURL이 너무 길어 서버에 전달할 수 없습니다.

데이터를 서버에 전달하려고하면 414 오류가 발생합니다. '리소스를로드하지 못했습니다. 서버가 414 (Request-URI가 너무 길음) 상태로 응답했습니다.

클라이언트 측 이미지를 성공적으로 다운로드했습니다. 나는 아무런 문제가 실제로 검색하지 만이 표현되는 파일 형식을 형성하는데, 이미지를 다운로드 할 수 있습니다.

$('#ExportPlanView').click(function (e) { 
    //planViewStage.toDataURL(function (e) { window.location = e.replace("image/png", "image/octet-stream")}); 
    planViewStage.toDataURL(function (dataURL) { 
     var output = dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 

     $.ajax({ 
      url: '../PlanView/ExportAsPDF', 
      data: { DataURL: output }, 
      datatype: 'json', 
      success: function (stream) { window.location = stream; } 
     }); 
    }); 
}); 

되어 작은 덩어리로 출력을 중단하고 서버에 각 청크를 보낼 수있는 적절한 솔루션을 서버가 이러한 덩어리를 재구성하고, pdf를 만든 다음, 해당 파일 스트림을 클라이언트로 보내서 다운로드를 시작하십시오.

참조 용 - 데이터 URL은 ~ 105k 자입니다.

답변

2

많은 양의 데이터를 전달해야 할 때 POST 요청을 사용하십시오. $.ajax의 기본값은 GET이므로 수동으로 유형을 정의해야합니다. 이 일을 변경하는 이유

$.ajax({ 
    url: 'blah.php', 
    type: 'POST', 
    data: { DataURL: output }, 
    datatype: 'json', 
    success: function() { ... } 
}) 
+0

당신이 설명 할 수 없습니다 : jQuery로 POST 요청을 보내려면

, 당신은 이런 식으로 뭔가를 사용할 수 있습니까? –

+0

POST 요청에는 URL 외에도 별도의 "본문"이 포함될 수 있습니다. POST 요청의 데이터는 쿼리 문자열과 같이 크기가 제한되지 않은 본문에서 전송됩니다. 일반적으로 PHP의 POST 본문에 대한 기본 최대 크기는 8 메가 바이트와 같습니다. –