2012-03-08 6 views
2

私はキャンバスをbase64文字列として表しています。この文字列をサーバーに渡して、サーバーがデータを使用してPDF文書を作成できるようにしたいと思います。キャンバスデータをPDF形式でエクスポートするにはどうすればよいですか? DataURLが長すぎてサーバーに渡すことができません

私は、サーバーにデータを渡すためにしようとしたとき、私は414エラーが表示されます。「リソースの読み込みに失敗しました:サーバーは414(要求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メガバイトです。 –

関連する問題