| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > загрузить картинку отображаемую на канве FabrickJS |
| Автор: mstdmstd 12.11.2015, 16:20 | ||||
| Всем привет, Используя FabrickJS канву, мне нужно загрузить картинку отображаемую на канве : Делаю :
И этот код нормально отрабатывает и картинка загружается в моем Chromium. Попоробовал загрузить в Opera - работает нормально, а в Firefox не работает - причем в консоле никаких ошибок или варнингов нет. В моем Firefox файлы грузятся нормально. Клиент пишет, что у него в Chromium загрузка не работает. Не подскажите, в чем может быть проблема? Может ли причина быть в настойках браузеров или блокировках ? Каких? дамп канвы :
|
| Автор: mstdmstd 15.11.2015, 15:46 |
| Кому несложно, зайдите, пожалуйста, на http://displo.com/wp-content/plugins/woo-dysplo-import/view_template.php?post_id=120&item_id=35 в разных браузерах и ниже картинки кликните на "Download". Подтвердите конфермацию. У меня под Kubuntu 14.10 (64-bit) Opera 32 и Chromium 43.0.2357.130 грузят картинку нормально Firefox 39 картинок не грузит Ошибок или варнингов нет Стоит несколько разширений(включая adblock) - я их все задизейблил и перезапустил браузер - не помогло... |
| Автор: mstdmstd 17.11.2015, 16:16 | ||||
Я поменял вывод этой строки со сформированным урлом на window.location:
алерт вывел такой тест(ниже) и открыватся стандартное окно для сохранения файла загрузки - файл сохраняется на диске, но с именем вроде XGBoAro8. есть ли возможность сохранить этот файл под его именем ?
|
| Автор: ksnk 19.11.2015, 12:50 |
Как всегда в это мире - "не всегда". У ссылки есть специальный атрибут `download` который определяет имя файла для сохранения на клиентской машине. Кое где - работает. Проверить http://jsfiddle.net/AbdiasSoftware/7PRNN/. Какие-то броузеры игнорируют атрибут download у ссылки. Более кроссброузерное решение - загрузить картинку на сервер, и тут-же отдать ее пользователю с нужным именем. А можно подождать, пока мир не станет лучше. Добавлено через 1 минуту и 57 секунд Отредактируй, pls, свое первое сообщение - "дамп канвы". Его можно поместить в тег `Цитата` вместо код. |
| Автор: ksnk 21.11.2015, 16:56 | ||
| Ну да, post'ом передать на сервер, строку порезать по символу ',', убедится, что последнее слово в первой половине - base64 и сделать base64_decode для второй. Поставить хидеры и выдать наружу получившуюся строку Что--то вроде
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/zagruzit-kartinku-otobrazhayemuyu-na-kanve-FabrickJS-id56449241ae20153f368b4568#findElement_E7045_5650781fae2015e07d8b4ea5_0 |
| Автор: ksnk 21.11.2015, 17:00 |
| header('Content-Disposition: attachment; filename="Image.png"'); Вот такой, примерно, заголовок нужно еще не забыть Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/zagruzit-kartinku-otobrazhayemuyu-na-kanve-FabrickJS-id56449241ae20153f368b4568#findElement_E7045_565078eaae201577798b50fd_0 |
| Автор: mstdmstd 24.11.2015, 07:29 | ||
| Cпасибо, кодировка работает нормально - валидный файл с картинкой успешно сохраняется - это если сохранять его во временном каталоге. Но если написать как в примере:
где $image_text_array[1] - валидный текст картинки - download для браузера(firefox, opera, cromium) не срабатывает - это с учетом, того что этот код вызывается из ajax запроса-а. Что-то упущено в заголовке? firebug показывает на возврате запроса заголовок png-картинки... |
| Автор: ksnk 24.11.2015, 08:10 | ||
Пример, очевидно, компиляция других примеров. Эту солянку нужно бы допилить "по месту". Во первых - Заголовок Content-type должен соответствовать типу картинки, которая будет выдаваться. Если отдается в конце концов png - то image/png. Во вторых - сначала выдаются заголовки, потом выводятся данные, так что вторую и третью строки нужно поменять местами. Расширение файла в filename тоже, вообще говоря, должно бы соответствовать... |
| Автор: mstdmstd 27.11.2015, 11:00 | ||
И так я делал:
В консоле браузера я вижу что возвращается png-картинка http://s017.radikal.ru/i431/1511/43/0202d165107e.png но диалог загрузки файла не открывается И я видимо не упомянул ранее - этот процесс в ajax-запросе - в нем формируется картинка. Получится ли в ajax-запросе? Или надо как-то иначе в ajax-запросе? |
| Автор: ksnk 27.11.2015, 12:12 | ||
| mstdmstd, В аяксе - не получится - тут важна игра с заголовками, а аякс все заголовки проглатывает сам. Нужно сформировать url ссылки, потом спровоцировать клик на нее. $(...).trigger('click'); Открывать его в отдельное окно (target="_blank"), либо в собственном iframe Вот так, например
name и ID у ифрейма должны быть одинаковы. Это просто какая-то кроссброузерная магия. |