2014-02-05 4 views
1

У меня есть приложение для рисования холста, такое как scri.ch. Моя проблема заключается в том, что я отправляю вывод с canv.toDataURL('image/png') как скрипт POST для PHP. Однако, когда я сохраняю эти данные в файл, они обрезаются. Я думал, что, возможно, это может быть вызвано низким лимитом max_input_vars. Я увеличил его до 1.000.000 и до сих пор ничего. JavaScript выглядит так:Данные сообщения Png слишком велики для PHP

function toPng() { 
    document.body.innerHTML += '<canvas id="copyCanvas" width="' + canv.width + '" height="' + canv.height + '"></canvas>'; 
    var copyCanv = document.getElementById('copyCanvas'), 
    copyCtx = copyCanv.getContext('2d'); 
    copyCtx.fillStyle = backgroundColor; 
    copyCtx.fillRect(0, 0, canv.width, canv.height); 
    copyCtx.drawImage(canv, 0, 0); 

    document.body.innerHTML += '<form id="imageData" method="post"><input type="text" maxlength="100000000" name="imageData" id="imageDataField"><input type="text" name="baseImage" id="baseImageField"></form>'; 
    var form = document.getElementById('imageData'); 
    form.action = './res/php.php'; 
    document.getElementById('imageDataField').value = copyCanv.toDataURL("image/png"); 
    document.getElementById('baseImageField').value = window.location.search.replace('&img=', '') || ''; 

    form.submit(); 
} 

Когда я эхо отослал данные назад, нижняя часть изображения отсутствует. Какие-нибудь советы?

+3

Попробуйте увеличить размер max_post_size в php.ini. –

+0

Также учитывайте ошибки и внимательно их слушайте. – kero

+0

Как отметил @JayBhatt, вам нужно увеличить max_post_size, поскольку 'canv.toDataURL()' преобразуется в строку base64, которая может быть довольно большой в зависимости от вашего размера холста – srquinn

ответ

0

У вас есть размер вашей доставки? Если он достаточно мал, вы должны проверить оба файла конфигурации apache и PHP.

+0

524288 байт от strlen, но фактический размер должен быть больше – Anagmate

+0

Вы проверили свой конфигурационный файл apache? –

1

Похоже, проблема заключалась в том, что у классического <input> есть некоторый интервал maxlegth, который нельзя сломать, потому что работало как textarea, так и POST ajax.

Смежные вопросы