| |
Приветствую. Столкнулся со следующей проблемой: написал скрипт на php для аплоада картинок на сайт. Всё замечательно, но есть у этого скрипта одна маленькая проблема: размер файлов ограничен, причём достаточно грустно (в среднем не более 2х мегабайт), в противном случае выдаёд ошибку. даже если у меня в скрипте максимальный размер указан много меньше. Хочу попробовать создал аплоадер на флэш. но не знаю, как это реализовать. если есть наработки или готовые исходники буду благодарен! |
|
|
|
так долго ждал, пока кто-нибудь поможет, что разобрался сам.
вот вам урок:
создаёте три пхп файла с названиями: uploadimg.php, uploadmuz.php, uploadvid.php
затем открываем флэш и создаём документ as2
в нём создаём кнопки и мувиклипы для управления. всю технологию описывать пошагово не буду. приведу код и ссылку на исходни, который можно скачать здесь.
а вот код содержимого одного из php файлоф
<?php Error_Reporting(E_ALL & ~E_NOTICE); if ($_FILES['Filedata']['name']) { $uploadDir = "images/"; $uploadFile = $uploadDir . basename($_FILES['Filedata']['name']); move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile); } ?>вот код самой флешки
stop(); canselbut.onRelease = function() { browse_btn.enabled = false; progress_text.text = "выберите тип загрузки"; editbar.mp3t._visible = false; editbar.flvvid._visible = false; editbar.images._visible = false; editbar.edit_text.text = "тип загрузки"; editbar.edit_but.enabled = true; name_txt.text = ""; upload_btn.enabled = false; }; browse_btn.enabled = false; progress_text.text = "выберите тип загрузки"; editbar.mp3t._visible = false; editbar.flvvid._visible = false; editbar.images._visible = false; editbar.edit_but.onRelease = function() { editbar.mp3t._visible = true; editbar.flvvid._visible = true; editbar.images._visible = true; }; editbar.mp3t.onRelease = function() { browse_btn.enabled = true; typeload = "music(mp3)"; ras = "*.mp3"; progress_text.text = ""; editbar.mp3t._visible = false; editbar.flvvid._visible = false; editbar.images._visible = false; uploaderfiles = "uploadmuz.php"; editbar.edit_text.text = "музыка"; }; editbar.flvvid.onRelease = function() { browse_btn.enabled = true; typeload = "video(FLV)"; ras = "*.flv"; progress_text.text = ""; editbar.mp3t._visible = false; editbar.flvvid._visible = false; editbar.images._visible = false; uploaderfiles = "uploadvid.php"; editbar.edit_text.text = "видео"; }; editbar.images.onRelease = function() { browse_btn.enabled = true; typeload = "image(jpg)"; ras = "*.jpg"; progress_text.text = ""; editbar.mp3t._visible = false; editbar.flvvid._visible = false; editbar.images._visible = false; uploaderfiles = "uploadimg.php"; editbar.edit_text.text = "картинки"; }; import flash.net.FileReference; // инициализируем настройки, кнопку upload_btn, мы отключаем, пока не будет известно имя файла upload_btn.enabled = false; // создаем экземпляр класса FileReference var file_fr:FileReference = new FileReference(); // создаем объект для листнера событий FileReference var list_obj:Object = new Object(); list_obj.onSelect = function() { upload_btn.enabled = true; name_txt.text = file_fr.name; editbar.edit_but.enabled = false; }; list_obj.onComplete = function() { progress_text.text = "Загрузка завершена"; rect_mc.clear(); upload_btn.enabled = false; }; list_obj.onProgress = function(bytesTotal, bytesLoaded) { var percent = bytesLoaded/file_fr.size; drawRec(percent); }; // если пользователь отменяет выбор файла list_obj.onCancel = function() { name_txt.text = "выбор файла отменён"; }; // если произошла ошибка list_obj.onIOError = function(fileRef) { progress_text.text = "Ошибка при загрузке:"+fileRef.name; }; // если произошла ошибка, связанная с безопасностью list_obj.onSecurityError = function(fileRef, error) { progress_text.text = "Ошибка защиты с файлом:"+fileRef.name+":"+error; }; // ошибки протокола list_obj.onHTTPError = function(fileRef:FileReference, error:Number) { progress_text.text += "HTTP ошибка с "+fileRef.name+":ошибка #"+error; }; // аттачим листнер file_fr.addListener(list_obj); //the event for the browse button browse_btn.onRelease = function() { file_fr.browse([{description:typeload, extension:ras}]); }; // событие для кнопки upload upload_btn.onRelease = function() { file_fr.upload(uploaderfiles); }; // создаём анимацию, отражающую процесс загрузки function drawRec(per) { rect_mc.progress_b._width = per*245; num = per*100; num = Math.round(num); progress_text.text = num+" %"; }код с комментами, так что сложностей не должно быть. можно всё и так понять, как работает, но проще скачать исходник и там смотреть. всем удачи, надеюсь. что кому-нибудь понадобиться.
Я так обрадовался, когда увидел Ваш урок! Но когда закачал исходник, расстроился... Незнаю почему, но ни картинки, ни музыка, ни видео не хочет закачиваться!!!
Пишет всегда "произошла ошибка с..."
Надеюсь, Вы знаете в чём проблема))
Догадываюсь. Дело в том, что вы скорее всего просто открываете swf файл и пытаетесь загружать.
Дело в том, что все эти файлы должны быть обязательно загружены на сервер с поддержкой пхп.
В домашних условиях советую использовать денвер.
ставите его к себе на комп, в этом сложностей не должно быть. версию советую брать 2004 года.
там в папке home создаёте папку с названием типа uploader.ru в ней ещё папку с названием www
вот в эту папку по адресу диск:/home/upload.ru/www/ разархивируешь то что скачал.
затем счёлкаешь на ярлык на рабочем столе start servers и в любом браузере набираешь придуманый адрес. в моём варианте upload.ru
всё должно работать. но!!!
необходимо найти у себя на компе файлик php.ini . он обычно лежит по адресу диск:/usr/local/php/
В нём найти строчку, которая отвечает за максимальный размер загружаемых файлов. по умолчанию стоит всего два метра. срочка эта выглядит так upload_max_filesize = 2M
Меняешь её на своё число, я ставил 2 гига (2048M).
И всё должно быть хорошо. Надеюсь. помог. если проблема останется, то пишите. Буду разбираться.
Так же ещё заметил косяк в исходнике, так текстовое поле, которое находится напротив кнопки обзор, такого же цвета как фон, буквы не видно, надо поменять)) Удачи!
на всякий случай всё перепроверил. у меня всё работает. вот ссылка на исправленый архив
Ссылка
а вот ссылка на денвер Думаю, тоже не будет лишней
denver.rar
Спасибо)
А вот как осуществить простую загрузку картинки .jpg в флеш-проект?
Т.е. пользователь нажимает кнопку обзор и выбирает фотку, затем картинка загружается и появляется в центре экрана...
Надеюсь, Вы знате как это сделать! Очень нужно)))
Пока не знаю, но могу попробовать разобраться))
Надеюсь, смогу помочь)))
Итааак. Алелуя. во всём разобрался. Есть такой вариант.Можно придумать и другой, главное фантазия)))
находим в нашем аплоадере строчки с кодом где описано событие onComplite и в эту функцию добавляем вот это
var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth()); var mcLoader:MovieClipLoader = new MovieClipLoader(); mcLoader.addListener(this); mcLoader.loadClip("123.jpg", container);вместо "123.jpg" ставим переменную какую-нибудь.
например нам нужен аплоадер только для картинок и мы используем наш скрипт uploadimg.php, в котором указана папка для загрузки images, тогда мы в коде флешки в том месте где мы обрабатываем выбор файлов
list_obj.onSelect = function() { upload_btn.enabled = true; name_txt.text = file_fr.name; }в эту же функцию добавим ещё строчку напримерimgload = "images/"+file_fr.name;а последняя строчка функции onComplite будет такой
mcLoader.loadClip(imgload, container);вот как-то так.
надеюсь помог.
Кстати, уважаемый Flasher, я разобрался со всем этим добром очень просто. Волшебная коавиша F1.
Если не очень хорошо с английским, скачайте русский хелп. Честное слово во влеш хелпе есть практически вся необходима информация, не хуже большинства учебников. Я вообще всё по флэш. что знаю, только с этой кнопкой и выучил ещё в далёкие времена MX2004 Macromedia)))) Удачи и успехов!
можно попробовать написать загрузку, если нет необходимости загружать картинку на сервер. Но не уверен, что это возможно.