Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка 413 Request Entity Too Large при ajax 
:(
    Опции темы
mstdmstd
Дата 31.3.2016, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Отправлять в base64, это в три раза больший объем от исходного
Значит мне декадировку надо делать на клиенте и отправлять в сабмит уже перекодированную строку
Для этого можно использовать функцию decode64 отсюда  http://ntt.cc/2008/01/19/base64-encoder-de...javascript.html
Судя по описанию это кроссбаузерное решение...
Это уменьшает файл отправки - но не факт что будет достаточно Смотрим  FileReader( https://developer.mozilla.org/en/docs/Web/API/FileReader ):
Цитата



File objects may be obtained from a FileList object returned as a result of a user selecting files using the <input> element, from a drag and drop operation's DataTransfer object, or from the mozGetAsFile() API on an HTMLCanvasElement.

А у меня файл в виде 64 битной строки, которую я могу декодировать. 
А вот методов для записи я не вижу. Если whatisnot, ничего не напутал, то, плиз, ткните, что за методы?

Это сообщение отредактировал(а) ksnk - 31.3.2016, 18:39
PM MAIL   Вверх
ksnk
Дата 31.3.2016, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Откуда взялась такая строка? Может чуть ранее по коду есть более удобный вид?

Можно строку преобразовать в объект blob, который вполне успешно притворяется файлом. Пример, правда, с formData, но и FileReader должен такое открывать.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
whatisnot
Дата 31.3.2016, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Цитата(mstdmstd @  31.3.2016,  16:18 Найти цитируемый пост)
Если whatisnot, ничего не напутал, то, плиз, ткните, что за методы?


Методов для этого придется использовать много и не только FileReader. Ну напрягите гугл, об этом (загрузка файлов на сервер частями) написано так много, вот с лету первое попавшееся -HTML5, загрузка файлов, что переписывать уже описанное... Есть на Хабре статьи по этому поводу, и решений не одно. Вы родите что либо свое из познанного, а уже о своих ошибках, если будут допущены, спрашивайте.   

PM MAIL   Вверх
mstdmstd
Дата 1.4.2016, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Спасибо, буду пробовать
Пока что я хочу 64-битной строку декодировать на клиенте и отправить сабмитом формы
Возможно уменьшив данные в сабмит и не будет ошибки из-за большого обьема данных...
Делаю 
Код

       var data = original_canvas.toDataURL(); // Источник данных fabrics js
       alert("+++original_frnt_img_val::"+var_dump(data) );   // алер выводит   +++original_frnt_img_val::data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACbAAAAbUCAYA ...



      var decoded_data= data.replace(/data\:image\/png\;base64\,/g, "")  // Убираем заголовок data:image/png;base64,
      alert( "decoded_data::"+var_dump(decoded_data) )         //  выводит decoded_data::iVBORw0KGgoAAAANSUhEUgAACbAAAAbUCAYAAAAkT...
      var decoded_data= decode64(decoded_data)                   // декодируем
      alert( "decoded_data::"+var_dump(decoded_data) )         //  выводит http://imgur.com/QTM9o6q


       alert( "ZZZ::"+var_dump(  jQuery('#original_frnt_img_val').val()  ) ) // Выводит ту же строку что и выше
       var theForm = jQuery("#form_save_template_full_image");
       theForm.submit(); // Сабмитим форму

       
       
       Форма сабмититься и файл записывается на диск функцией file_put_contents без перекодировки и изменений но при попытке прочитать его получаю
Код

       "Loading capture.png" failed

       
       И открыв этот файл в текстовом редакторе я вижу http://i.imgur.com/luLBkhj.png
       Сравнивая этот файл с другими png-файлами  в текстовом редакторе вижу что они не похожи


Функция decode64 взята отсюда http://ntt.cc/2008/01/19/base64-encoder-de...javascript.html
Я пробовал использовать atob вместо decode64 и тот же результат

Изначально я отправлял 64-данные и на сервере делал перекодировку перед записью в файл: 
Код

$upload_front = file_put_contents( $capture_dest_filename , base64_decode( preg_replace("/data:image\/png;base64,/", '', $original_frnt_img_val ) )  );




Это сообщение отредактировал(а) mstdmstd - 1.4.2016, 09:08
PM MAIL   Вверх
ksnk
Дата 1.4.2016, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



mstdmstd, Я понимаю, конечно, желание обойтись малой кровью, но FormData был придуман совсем не от того, что кому то не хотелось использовать стандартную форму. Причина в том, что стандартной формой можно сделать далеко не все. В частности, послать файл довольно сложно. А в "обычном" для формы виде - практически невозможно.
Можно посмотреть на мои ссылки и попытаться воспользоваться этим объектом. Потом, когда размер загружаемого файла опять упрётся в нежелание разбираться с настройками сервера, можно почитать про FileReader, поискать примеры его использования для загрузки файлов по кусочкам. 
Если нужен результат, а не личный опыт - проще и разумнее воспользоваться плагином. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mstdmstd
Дата 5.4.2016, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Спасибо за подсказки!
Сделал с небольшими изменениями как описано здесь https://habrahabr.ru/company/Techart/blog/100189/.
Как я понимаю, решение кроссбраузерно, пока у браузера клиента хватит памяти...
Локально и на сервре работает, хотя судя по кометариям во многих случаях этого недостаточно...
PM MAIL   Вверх
ksnk
Дата 5.4.2016, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Нужно понимать, что пока клиент не загрузит все данные, его броузер(страница) будет заблокирован. Можно посмотреть на комментарии по ссылке на хабре
Цитата

 0lympian  26 июля 2010 в 21:47  0     
Кстати… вместо отключения асинхронности лучше бы отправляли номер чанка и собирали при получении последнего
  sunnybear  26 июля 2010 в 22:42    0     
угу, серверная часть при этом не сложнее: открываем файл, перемещаемся на позицию X, пишем очередной чанк. Ну и можно заранее создавать нужный по размеру файл, забитый нулями.

Ну и тот факт, что статья написана 6 лет назад говорит о том, что плагины могли бы оказаться уже написаными.
https://habrahabr.ru/post/154097/ - более новая статья, с примерами работы с FileReader и FormData




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0913 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.