2

我将画布表示为 base64 字符串。我想将此字符串传递给服务器,以便服务器可以使用数据制作 PDF 文档。

当我尝试将数据传递到服务器时收到 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 个字符。

4

1 回答 1

2

当您需要传递大量数据时,请使用 POST 请求。$.ajax默认为 GET,因此您需要手动定义类型。

要使用 jQuery 发送 POST 请求,您可以使用如下内容:

$.ajax({
    url: 'blah.php',
    type: 'POST',
    data: { DataURL: output },
    datatype: 'json',
    success: function() { ... }
})
于 2012-03-08T23:52:25.843 回答