Экспорт данных из холста в PDF - как?DataURL слишком длинный для передачи на сервер - PullRequest
2 голосов
/ 09 марта 2012

Мой холст представлен в виде строки 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-адрес данных составляет ~ 105 тыс. символов.

1 Ответ

2 голосов
/ 09 марта 2012

Используйте запрос POST, когда вам нужно передать большие объемы данных. $.ajax по умолчанию - GET, поэтому вам нужно определить тип вручную.

Чтобы отправить запрос POST с помощью jQuery, вы можете использовать что-то вроде этого:

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