ошибка 413 Request Entity Too Large при ajax - запросе

mstdmstd

Новичок
Всем привет,
Есть необходимость загрузить картинку в строковом представлении через ajax - запрос. Делаю:
PHP:
                        alert( "capture_image typeof data::"+ (typeof data) +"   data.length::"+data.length+"   data::"+data )
                        jQuery.ajax({
                            url: '<?php echo site_url( "dashboard/save_template_full_image" ) ?>',
                            type: 'POST',
                            dataType: "json",
                            data: {
                        <?php echo $this->security->get_csrf_token_name(); ?>:"<?php echo $this->security->get_csrf_hash(); ?>",
                            id:             _templateID,
                            image_capture:         data
                    },
                    success: function(result) {
алерт в самой первой строке выводит
Код:
capture_image typeof data::string   data.length::17449558   data::data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACbAAAAbUCAYAAAAkT6
И после паузы получаю ошибку 413 Request Entity Too Large...
Длина строки это ~ 16 МБ

Открываю и смотрю etc/php.ini :
Код:
; Rename this file to php.ini and uncomment or add directives.
; For a complete list of valid directives, visit:
;  http://us2.php.net/manual/en/ini.php

[PHP]
; We highly recommend that you leave this options enabled
cgi.fix_pathinfo=1

apc.max_file_size = 1024M
;512M
apc.shm_size = 1024M
;512M
max_execution_time = 900
;300
memory_limit = 1024M
;512M
; post_max_size = 256M
upload_max_filesize = 1024M
;512M

; Increase maximum post size
post_max_size = 1024M
;; 512M

;error_reporting = E_ALL &amp; ~E_DEPRECATED &amp; ~E_NOTICE

; Increase execution time
;max_execution_time = 300

; pull in EGPCS [Environment, GET, POST, Cookie, Server] variables as globals
;register_globals = true

; For performance reasons, (mt) does not load all of the modules that are available
; into PHP. You may uncomment any one of the following "extension" lines to enable
; the desired module

; Salblotron XSLT
;extension=xslt.so

; save in local tmp
session.save_path=/home/181213/data/tmp

allow_url_fopen = 1

output_buffering = on
default_socket_timeout = 300
В phpinfo я вижу :

Код:
PHP Version 5.5.21
...
memory_limit    1024M    1024M

post_max_size    1024M    1024M

upload_max_filesize    1024M    1024M

max_execution_time    900    900

upload_max_filesize    1024M    1024M
Не подскажите в чем проблема и как ее побороть? Файл, который я пытаюсь записать довольно большой, но явно меньше параметров в конфе.

Или это ограничения d ajax-запросе ?
Гуглом я не нашел есть ли ограничения в размере для ajax-запроса...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
client_max_body_size 32m в конфиге сервера, < это для nginx
 

mstdmstd

Новичок
Спасибо!
Пообщался с сапортом, там ограничения на post_max_size = 24M, хотя у меня и меньшие файлы выдают ошибку,
в независимости что написано в php.ini.
Код:
The max allowed on the Grid are as follows:
memory_limit = 99M
max_execution_time = 300
upload_max_filesize = 20M
post_max_size = 24M
pmGoing over these values will truncate them to the capped amount but you should still be within these with a 16MB file
Though if I recall correctly over 10MB do tend to get a little unstable and timeout or drop connections
И решил переделать загрузку сабмитом формы без аджакса - и вопрос, а есть ли удобные способы/утилиты для загрузки больший файлов при сабмите формы?
Сейчас я использую file_put_contents...
 

AnrDaemon

Продвинутый новичок
+- да. Подробнее - google:base64
Загрузка БОЛЬШИХ ФАЙЛОВ аяксом - предпочтительнее.
А ещё более предпочтительно что-то, что может проверить корректность загрузки, хотя бы по контрольным суммам.
 

mstdmstd

Новичок
+- да. Подробнее - google:base64
Загрузка БОЛЬШИХ ФАЙЛОВ аяксом - предпочтительнее.
А ещё более предпочтительно что-то, что может проверить корректность загрузки, хотя бы по контрольным суммам.
А не подскажите что-нить удобное для этого? Можно с примерчиком...
 

mstdmstd

Новичок
Это я уже видел :
Объекты File можно получить через объект FileList, который возвращается как результат при выборе файлов пользователем с помощью элемента <input>, через drag and drop из объекта DataTransfer, или с помощью mozGetAsFile(), метода доступного в API элемента HTMLCanvasElement.
А у меня картинка в строковом представлении, да и я вижу методы а как записывать? Методов записи не вижу, сорри...
 

HORO

Новичок
сори, я думал про файлы речь. Коли строка то только настройки сервера post_max_size и пр
А вообще, можно строку частями передавать, ну а в конце проверить md5 например того что в форме и того что на сервере
 
Сверху