выбор изображения локально из http URL и обслуживание этого изображения без обратной передачи на сервер - PullRequest
0 голосов
/ 06 июня 2010

Я новичок во Flash (никогда не создавал ничего во Flash). Я хорошо знаком с веб-приложениями (на основе J2EE) и обладаю достаточным опытом в Javascript.

Вот мое требование.

Я хочу, чтобы пользователь выбрал (через HTML-форму) изображение. Обычно в сообщении это изображение отправляется на сервер и может храниться там для последующей обработки. Я не хочу этого. Я хочу сохранить это изображение локально, а затем отправить его пользователю через HTTP.

Итак, поток: 1. Перейдите к «URL-адресу выбора изображения»: mywebsite.com/selectImage

Просмотрите изображение и выберите изображение

Это передало бы управление локально некоторому коду, выполняющемуся на клиенте (Javascript или flash), которое затем сохраняло бы изображение локально в каком-то месте на клиентском компьютере.

  1. Перейдите на «Показать URL-адрес изображения»: mywebsite.com/showImage

Это может в конечном итоге привести к запуску некоторого клиентского кода в браузере, который извлекает изображение и отображает его (без каких-либо повторных обращений к серверу.)

Я рассмотрел следующие варианты:

  1. Использовать локальное хранилище HTML5. Так как я новичок во всем, я посмотрел на это. Я обнаружил, что довольно просто хранить и извлекать изображения в javascript (разрешены только строки, но я надеюсь, что хранение строк в кодировке base64 будет работать по крайней мере для небольших изображений). Тем не менее, как мне передать изображение через http URL, который указывает на мой сервер без обратной передачи? Я видел интересную статью на http://hacks.mozilla.org/category/fileapi/, но она работала бы только в Firefox, и мне нужно работать на всех последних браузерах (по крайней мере, на тех, которые поддерживают локальное хранилище HTML5)

  2. Использовать flash SharedObjects. Хорошо, это было бы хорошо - единственное, я не уверен, с чего начать. Фрагменты сценариев действий для этого разбросаны повсюду, но я не знаю, как использовать эти сценарии на реальной HTML-странице :) Мне не нужно создавать какие-либо фильмы или что-либо еще - просто нужно хранить изображение и обслуживать его локально. Если бы я пошел по этому пути, я бы также использовал его для локального хранения других «строк». Если вы предлагаете это, пожалуйста, дайте мне точные шаги (могут быть указатели на другие веб-сайты), как это сделать. Я бы не хотел платить за любое программное обеспечение среды разработки флеш-памяти в идеале:)

Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 июня 2010

OK Мне удалось реализовать следующее решение (на всякий случай, если у кого-то есть комментарии или он хочет знать ответ)

  1. написал код на стороне сервера, который берет изображение и возвращает его версию в кодировке Base 64.
  2. использовал скрытый трюк iframe, чтобы преобразовать данные, закодированные в base 64, в iframe и сохранить их в изображение путем динамического изменения источника изображения на данные uri

Для "скрытого трюка в iframe" - если вам интересно, есть хорошая статья по адресу (см. Www.openjs.com/articles/ajax/ajax_file_upload/response_data.php)

Единственным ограничением является то, что IE не работает с изображениями, длина строки в кодировке 64 которых превышает 32 КБ - см. http://msdn.microsoft.com/en-us/ie/dd578309.aspx. Обратите внимание, что работает только IE 8 - IE 7 не поддерживает данные, на мой взгляд.

0 голосов
/ 06 июня 2010

Вы можете использовать URI данных для отображения файла. По сути, вы используете данные изображения (плюс префикс) в качестве атрибута src элемента изображения. Если вы уже выяснили, как считывать файл в память как строку в кодировке base64, использование URI данных, вероятно, будет самым простым способом отображения изображения.

...