В общем суть вопроса в следующем.
Какой код прописать в html или Flash компонентах, что бы к примеру из Flash галереи можно было сохранять изображения?(правой кнопкой) или же добавить кнопку скачать?
добавьте кнопку скачать. из флеш галереи нельзя сохранять изображения.
А монжо поподробнее? Как связать кнопку с изображением? Какие команды ?
Такой же вопрос мучает.
Думаю что проблему через PHP решать буду - других мыслей нет )))
Можно и правой кнопкой. Для галерей, где картинки грузятся из внешних файлов. Правда, несколько сложновато и в принципе, это эмуляция. Но все-таки...
Вот рабочий пример:http://www.us-pro.ru/mooncar/contextmenu/contexMenu2.html
Кликаем правой кнопкой мыши на картинке во флешке, выбираем соответствующий пункт меню, и сохраняем картинку к себе на комп.
В двух словах -
1) Флеш - назначается отдельное кастомизированное контекстное меню флеш-плеера на контейнер-мувик с загруженной картинкой. А вне области картинки работает общее меню.
2) Сервер - в качестве ссылки на картинку вызывается php-скрипт, который принимает URL картинки, генерит на ее основе копию, отдает JPG, форсируя при этом вызов диалогового меню через заголовки.
Флеш:
var picURL:String = 'pic1.jpg';
//грузим картинку
var cont:MovieClip = this.createEmptyMovieClip('cont_mc', this.getNextHighestDepth()); //контейнер для картинки
this.onLoadInit = function(target:MovieClip) {
target.picURL = picURL; //запоминаем URL картинки внутри ее контейнера (пригодится для вызова через getURL в функции вызова сохранения)
target.menu = menu_cm; //назначаем контейнеру с картинкой индивид. контекстн. меню (см. в конце)
}
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this); //слушатель - сам _level0
loader.loadClip(picURL, cont);
//вызов скрипта сохранения картинки
function doSave(mc:Object):Void {
//вызываем и передаем скрипту url файла. Тут _self в target-параметре, чтобы браузер не дергался, а также в записи не используем параметр метода - GET.
getURL('forcesave.php?picurl=' + mc.picURL, '_self');
}
//"общее" контекстное меню флеш-плеера, эти действия нужны только для скрытия системных пунктов
var cmMain:ContextMenu = new ContextMenu();
cmMain.hideBuiltInItems();
this.menu = cmMain;
//определяем язык операционной системы на компе пользователя
var lang:String = System.capabilities.language ;
var textForItemMenu:String; //текст для пункта меню
switch (lang) {
case 'ru':
textForItemMenu = 'Сохранить изображение как...';
break ;
case 'en':
textForItemMenu = 'Save image as...';
break ;
}
//формируем меню для мувика
var menu_cm:ContextMenu = new ContextMenu();
menu_cm.hideBuiltInItems();
menu_cm.customItems.push(new ContextMenuItem(textForItemMenu, doSave));
Вызываемый скрип для отдачи картинки, PHP:
<?php
$picurl = $_GET['picurl'];
$im=imagecreatefromjpeg($picurl);
header("Content-type: application/applefile"); //так ли сильно это нужно - не уверен, с учетом присутствия нижней строчки
header("Content-Disposition: attachment; filename=$picurl"); //форсируем отображение браузером диалога save.
imagejpeg($im, "", 100);
imagedestroy($im);
?>
Думаю что код можно приспособить в любую галерею, где есть загрузка внешних файлов картинок. Просто в вашей галерее, в методе onLoadInit нужно добавить будет код для присвоения индивидуального меню, как в примере. Если фоток много - делаете loadClip и создание контейнеров, например, в цикле.
Кстати, возможно было бы и проще реализовать скачивание с учетом форсирования диалогового окна? Не силен в PHP.
Естественно, можно расширить поддержку разных типов файлов изображений в скрипте PHP.
Можно в скрипте легко ввести авторизацию на скачивание, задав проверку сессионной переменной-идентификатора пользователя, например для скачивания полноразмерных фоток:
session_start();
if ($_SESSION['userid']) {
$picurl = $_GET['picurl'];
$im=imagecreatefromjpeg($picurl);
header("Content-type: application/applefile");
header("Content-Disposition: attachment; filename=$picurl");
imagejpeg($im, "", 100);
imagedestroy($im);
} else {
echo 'Скачивание доступно только для авторизванных пользователей';
}
mooncar, очень спасибо.
ps.
Век живи - век учись.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.