Здравствуйте! У меня на сайте есть визивиг-редактор.
Когда я вставляю туда картинку с компьютера, то редактор создаёт тег img, а в качестве src прописывает содержимое картинки, закодированное в base64. То есть если даже вставить картинку 2х2 пикселя, то количество символов, которое генерирует визивиг-редактор больше сотни.
Проблема в том, что если попытаться вставить большую картинку, которая весит 1.5 мегабайта, и отправить форму, то
происходит редирект на 404 ошибку. Потому что в данном случае, количество символов будет почти 2 миллиона. И эти два миллиона я пытаюсь передать в POST.
Еррор лог пустой. После отправки формы пытаюсь вывести все данные просто через
print_r($_POST)
, и даже в таком случае происходит редирект на 404 при большой картинке, а с маленькой все норм.
Есть ли какие-то ограничения на длину строки в POST? Или есть ли какое-то решение на стороне клиента, чтобы перед отправкой формы, картинки сжимались как-то или перерисовывались в меньшее разрешение, например, с помощью JS?
UPD: Добавил исходный код.
<form method="POST" action="/cabinet/new/" id="new_case" autocomplete="off" enctype="multipart/form-data">
<textarea id="summernote" name="new_case_body"></textarea>
<input type="submit" name="new_case" id="fs" value="Сохранить">
</form>
И обработчик:
if (isset($_POST['new_case'])) {
print_r($_POST);exit;
}
Следует отметить, что на сервере есть ЧПУ.
То есть в action формы у меня указано /cabinet/new/, а по факту сервер отправляет на /index.php?r=/cabinet/new/ и уже дальше через require я подгружаю нужный модуль, например, cabinet_new.php
Работает так:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [QSA,R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
RewriteRule \.(php|html|swf|fla|xml|ico|jpg|gif|png|txt|js|css|eot|ttf|woff|map)$ - [L]
RewriteRule ^(.*)$ index.php?r=$1 [L,QSA]
Настройки такие:
memory_limit = 128M
post_max_size = 32M
upload_max_filesize = 2M
UPD2
Провёл тест. Вставляю в текстовое поле 1 000 000 символов (почти 1МБ), всё работает нормально.
Вставляю чуть больше — 1 100 000, отправляю форму — редирект на 404
Значит, где-то есть ограничение на длину POST свыше 1МБ.
Техподдержка говорит, что никаких ограничений нет.
Увеличил upload_max_filesize до 16М, всё равно 404