Как да експортирате URL на данните на платното като PDF? DataURL е твърде дълъг за предаване към сървъра

Моето платно е представено като низ base64. Бих искал да предам този низ на сървъра, така че сървърът да може да създаде PDF документ, използвайки данните.

Получавам грешка 414, когато се опитвам да предам данните на сървъра: „Неуспешно зареждане на ресурс: сървърът отговори със състояние 414 (Request-URI Too Long).

Успешно изтеглих изображението от страна на клиента. Всъщност нямам проблеми с извличането и изтеглянето на изображението, само с оформянето на типа файл, в който е представено.

$('#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 знака.


person Sean Anderson    schedule 08.03.2012    source източник


Отговори (1)


Използвайте POST заявка, когато трябва да предадете големи количества данни. $.ajax по подразбиране е GET, така че трябва да дефинирате типа ръчно.

За да изпратите POST заявка с jQuery, можете да използвате нещо подобно:

$.ajax({
    url: 'blah.php',
    type: 'POST',
    data: { DataURL: output },
    datatype: 'json',
    success: function() { ... }
})
person Jani Hartikainen    schedule 08.03.2012
comment
Бихте ли обяснили защо това променя нещата? - person Sean Anderson; 09.03.2012
comment
POST заявката може да съдържа отделно тяло в допълнение само към URL адреса. Данните в POST заявка се изпращат в тялото, което не е толкова ограничено по размер, колкото низа на заявката. Обикновено максималният размер по подразбиране за тялото на POST в PHP е нещо като 8 мегабайта. - person Jani Hartikainen; 09.03.2012