![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| mstdmstd |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
Всем привет,
Используя FabrickJS канву, мне нужно загрузить картинку отображаемую на канве : Делаю :
И этот код нормально отрабатывает и картинка загружается в моем Chromium. Попоробовал загрузить в Opera - работает нормально, а в Firefox не работает - причем в консоле никаких ошибок или варнингов нет. В моем Firefox файлы грузятся нормально. Клиент пишет, что у него в Chromium загрузка не работает. Не подскажите, в чем может быть проблема? Может ли причина быть в настойках браузеров или блокировках ? Каких? дамп канвы :
Это сообщение отредактировал(а) mstdmstd - 21.11.2015, 10:31 |
||||
|
|||||
| mstdmstd |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
Кому несложно, зайдите, пожалуйста, на
http://displo.com/wp-content/plugins/woo-d...&item_id=35 в разных браузерах и ниже картинки кликните на "Download". Подтвердите конфермацию. У меня под Kubuntu 14.10 (64-bit) Opera 32 и Chromium 43.0.2357.130 грузят картинку нормально Firefox 39 картинок не грузит Ошибок или варнингов нет Стоит несколько разширений(включая adblock) - я их все задизейблил и перезапустил браузер - не помогло... Это сообщение отредактировал(а) mstdmstd - 21.11.2015, 10:29 |
|||
|
||||
| mstdmstd |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
Я поменял вывод этой строки со сформированным урлом на window.location:
алерт вывел такой тест(ниже) и открыватся стандартное окно для сохранения файла загрузки - файл сохраняется на диске, но с именем вроде XGBoAro8. есть ли возможность сохранить этот файл под его именем ?
|
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Как всегда в это мире - "не всегда". У ссылки есть специальный атрибут `download` который определяет имя файла для сохранения на клиентской машине. Кое где - работает. Проверить можно здесь. Какие-то броузеры игнорируют атрибут download у ссылки. Более кроссброузерное решение - загрузить картинку на сервер, и тут-же отдать ее пользователю с нужным именем. А можно подождать, пока мир не станет лучше. Добавлено через 1 минуту и 57 секунд Отредактируй, pls, свое первое сообщение - "дамп канвы". Его можно поместить в тег `Цитата` вместо код. Это сообщение отредактировал(а) ksnk - 19.11.2015, 12:50 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| mstdmstd |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
А как это можно сделать? У меня есть переменная imageURL содержимое которой алертом выводится как :
Я могу передать содержимое этой переменной в ajax-запрос и в нем эту переменную нужно декодировать через base64_decode ? И потом клиенту выдавать этот файл с нужным именем? |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Ну да, post'ом передать на сервер, строку порезать по символу ',', убедится, что последнее слово в первой половине - base64 и сделать base64_decode для второй.
Поставить хидеры и выдать наружу получившуюся строку Что--то вроде
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
header('Content-Disposition: attachment; filename="Image.png"');
Вот такой, примерно, заголовок нужно еще не забыть Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| mstdmstd |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
Cпасибо, кодировка работает нормально - валидный файл с картинкой успешно сохраняется - это если сохранять его во временном каталоге.
Но если написать как в примере:
где $image_text_array[1] - валидный текст картинки - download для браузера(firefox, opera, cromium) не срабатывает - это с учетом, того что этот код вызывается из ajax запроса-а. Что-то упущено в заголовке? firebug показывает на возврате запроса заголовок png-картинки... |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Пример, очевидно, компиляция других примеров. Эту солянку нужно бы допилить "по месту". Во первых - Заголовок Content-type должен соответствовать типу картинки, которая будет выдаваться. Если отдается в конце концов png - то image/png. Во вторых - сначала выдаются заголовки, потом выводятся данные, так что вторую и третью строки нужно поменять местами. Расширение файла в filename тоже, вообще говоря, должно бы соответствовать... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| mstdmstd |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 30.12.2008 Репутация: нет Всего: нет |
И так я делал:
В консоле браузера я вижу что возвращается png-картинка http://s017.radikal.ru/i431/1511/43/0202d165107e.png но диалог загрузки файла не открывается И я видимо не упомянул ранее - этот процесс в ajax-запросе - в нем формируется картинка. Получится ли в ajax-запросе? Или надо как-то иначе в ajax-запросе? |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
mstdmstd,
В аяксе - не получится - тут важна игра с заголовками, а аякс все заголовки проглатывает сам. Нужно сформировать url ссылки, потом спровоцировать клик на нее. $(...).trigger('click'); Открывать его в отдельное окно (target="_blank"), либо в собственном iframe Вот так, например
name и ID у ифрейма должны быть одинаковы. Это просто какая-то кроссброузерная магия. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |