![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
mstdmstd |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 ):
А вот методов для записи я не вижу. Если whatisnot, ничего не напутал, то, плиз, ткните, что за методы? Это сообщение отредактировал(а) ksnk - 31.3.2016, 18:39 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Откуда взялась такая строка? Может чуть ранее по коду есть более удобный вид?
Можно строку преобразовать в объект blob, который вполне успешно притворяется файлом. Пример, правда, с formData, но и FileReader должен такое открывать. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
whatisnot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 14.12.2014 Репутация: 1 Всего: 2 |
Методов для этого придется использовать много и не только FileReader. Ну напрягите гугл, об этом (загрузка файлов на сервер частями) написано так много, вот с лету первое попавшееся -HTML5, загрузка файлов, что переписывать уже описанное... Есть на Хабре статьи по этому поводу, и решений не одно. Вы родите что либо свое из познанного, а уже о своих ошибках, если будут допущены, спрашивайте. |
|||
|
||||
mstdmstd |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
Спасибо, буду пробовать
Пока что я хочу 64-битной строку декодировать на клиенте и отправить сабмитом формы Возможно уменьшив данные в сабмит и не будет ошибки из-за большого обьема данных... Делаю
Форма сабмититься и файл записывается на диск функцией file_put_contents без перекодировки и изменений но при попытке прочитать его получаю
И открыв этот файл в текстовом редакторе я вижу http://i.imgur.com/luLBkhj.png Сравнивая этот файл с другими png-файлами в текстовом редакторе вижу что они не похожи Функция decode64 взята отсюда http://ntt.cc/2008/01/19/base64-encoder-de...javascript.html Я пробовал использовать atob вместо decode64 и тот же результат Изначально я отправлял 64-данные и на сервере делал перекодировку перед записью в файл:
Это сообщение отредактировал(а) mstdmstd - 1.4.2016, 09:08 |
||||||
|
|||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
mstdmstd, Я понимаю, конечно, желание обойтись малой кровью, но FormData был придуман совсем не от того, что кому то не хотелось использовать стандартную форму. Причина в том, что стандартной формой можно сделать далеко не все. В частности, послать файл довольно сложно. А в "обычном" для формы виде - практически невозможно.
Можно посмотреть на мои ссылки и попытаться воспользоваться этим объектом. Потом, когда размер загружаемого файла опять упрётся в нежелание разбираться с настройками сервера, можно почитать про FileReader, поискать примеры его использования для загрузки файлов по кусочкам. Если нужен результат, а не личный опыт - проще и разумнее воспользоваться плагином. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
mstdmstd |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
Спасибо за подсказки!
Сделал с небольшими изменениями как описано здесь https://habrahabr.ru/company/Techart/blog/100189/. Как я понимаю, решение кроссбраузерно, пока у браузера клиента хватит памяти... Локально и на сервре работает, хотя судя по кометариям во многих случаях этого недостаточно... |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Нужно понимать, что пока клиент не загрузит все данные, его броузер(страница) будет заблокирован. Можно посмотреть на комментарии по ссылке на хабре
Ну и тот факт, что статья написана 6 лет назад говорит о том, что плагины могли бы оказаться уже написаными. https://habrahabr.ru/post/154097/ - более новая статья, с примерами работы с FileReader и FormData -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |