Ajax not post base64 данные большого изображения

Я передаю данные base64 с помощью ajax в свою php-функцию, но для изображения большого размера Ajax не публикует данные. Но тот же код отлично работает для небольших изображений.

srcdata=data:image/jpeg;base64,/9j/4SxvRXhpZgAASUkqAAgAAAANAAABBAABAAAAwAwAAAEBBAABAAAALAcAAA8BAgAIAAAAqgAAABABAgARAAAAsgAAABIBAwABAAAABgAAABoBBQABAAAAxAAAABsBBQABAAAAzAAAACgBAwABAAAAAgAAADEBAgAMAAAA1AAAADIBAgAUAAAA4AAAABMCAwABAAAAAQAAAGmHBAABAAAA9AAAACWIBAABAAAA3gkAAPAJAABTQU1TVU5HAFNBTVNVTkctU0dILUk1MzcAAEgAAAABAAAASAAAAAEAAABJNTM3VUNVQ05DOQAyMDE0OjA2OjIyIDEwOjE3OjEwACEAmoIFAAEAAACGAgAAnYIFAAEAAACOAgAAIogDAAEAAAADAAAAJ4gDAAEAAAB9AAAAAJAHAAQAAAAwMjIwA5ACABQAAACWAgAABJACABQAAACqAgAAAZEHAAQAAAABAgMAAZIKAAEAAAC AgAAApIFAAEAAADGAgAAA/F//8L1QAAzfH//yRxAAENngAAFK4AAErK// giAABS/8AACRQAABVo8AAf/3AAB25wABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATv8AAf/2AACFNwABTv8AAf/2AACFNwABT5QAAf/2AACFXgABT5QAAf/ ` 

данные слишком велики, поэтому частично размещены,

Аякса

 count = 1; name='test' jQuery.ajax({ url:"/createImage.php", data:{img_data:srcdata,img_id:count,name:name}, type:"POST", contentType:"application/x-www-form-urlencoded", success:function(result) { alert(result); } }); 

PHP

 print_r($_POST); // is empty when logging.. 

Когда я пытаюсь получить данные сообщения в php, я становлюсь пустым. Что может быть причиной того, что ajax не отправляет данные при использовании base64.

Solutions Collecting From Web of "Ajax not post base64 данные большого изображения"

Я согласен с TrueBlueAussie . Это похоже на настройку на стороне сервера в PHP.

Откройте файл php.ini и найдите строку с upload_max_filesize . По умолчанию он установлен в 2M, что составляет 2 МБ. Попробуйте увеличить его до 3 МБ и посмотреть, не по-прежнему ли вы получаете ошибку.

Примечание. Для этого вам потребуется перезапустить Apache / Nginx / webserver, чтобы повлиять на файл php.ini .

Несмотря на то, что вы отправляете файл как переменную, application/x-www-form-urlencoded может быть интерпретировано в PHP как фактическая загрузка файла. Другой параметр php.ini вы можете взглянуть, будет post_max_size который имеет значение по умолчанию 8M, что является максимальным значением, которое вы можете использовать POST для вашего PHP-скрипта.

Прежде всего: код, который вы укажете в base64, возвращает поврежденное изображение; при отправке кода в base64 используется функция encodeURIComponent, чтобы избежать ошибок при отправке.

Попробуйте этот код:

  var srcdata = "data:image/jpeg;base64,/9j/4SxvRXhpZgAASUkqAAgAAAANAAABBAABAAAAwAwAAAEBBAABAAAALAcAAA8BAgAIAAAAqgAAABABAgARAAAAsgAAABIBAwABAAAABgAAABoBBQABAAAAxAAAABsBBQABAAAAzAAAACgBAwABAAAAAgAAADEBAgAMAAAA1AAAADIBAgAUAAAA4AAAABMCAwABAAAAAQAAAGmHBAABAAAA9AAAACWIBAABAAAA3gkAAPAJAABTQU1TVU5HAFNBTVNVTkctU0dILUk1MzcAAEgAAAABAAAASAAAAAEAAABJNTM3VUNVQ05DOQAyMDE0OjA2OjIyIDEwOjE3OjEwACEAmoIFAAEAAACGAgAAnYIFAAEAAACOAgAAIogDAAEAAAADAAAAJ4gDAAEAAAB9AAAAAJAHAAQAAAAwMjIwA5ACABQAAACWAgAABJACABQAAACqAgAAAZEHAAQAAAABAgMAAZIKAAEAAAC AgAAApIFAAEAAADGAgAAA/F//8L1QAAzfH//yRxAAENngAAFK4AAErK// giAABS/8AACRQAABVo8AAf/3AAB25wABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATv8AAf/2AACFNwABTv8AAf/2AACFNwABT5QAAf/2AACFXgABT5QAAf/ `"; var count = 1; var name = 'test'; $.ajax({ type: "POST", url: "./createImage.php", data: { img_data:srcdata, img_id:count, name:name }, cache: false, contentType: "application/x-www-form-urlencoded", success: function (result) { alert(result); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>