29
июн
  Аплоад файлов   0 баллов
 

Приветствую. Столкнулся со следующей проблемой: написал скрипт на php для аплоада картинок на сайт. Всё замечательно, но есть у этого скрипта одна маленькая проблема: размер файлов ограничен, причём достаточно грустно (в среднем не более 2х мегабайт), в противном случае выдаёд ошибку. даже если у меня в скрипте максимальный размер указан много меньше. Хочу попробовать создал аплоадер на флэш. но не знаю, как это реализовать. если есть наработки или готовые исходники буду благодарен!

Комментарии (10)   Автор: Rain...
Комментарии
Rain...
14.07.10 | 23:51
0 баллов

так долго ждал, пока кто-нибудь поможет, что разобрался сам.
вот вам урок:
создаёте три пхп файла с названиями: 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+" %";
}

код с комментами, так что сложностей не должно быть. можно всё и так понять, как работает, но проще скачать исходник и там смотреть. всем удачи, надеюсь. что кому-нибудь понадобиться.

FlashER
15.07.10 | 09:53
0 баллов

Я так обрадовался, когда увидел Ваш урок! Но когда закачал исходник, расстроился... Незнаю почему, но ни картинки, ни музыка, ни видео не хочет закачиваться!!!
Пишет всегда "произошла ошибка с..."
Надеюсь, Вы знаете в чём проблема))

Rain...
15.07.10 | 20:47
0 баллов

Догадываюсь. Дело в том, что вы скорее всего просто открываете 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).
И всё должно быть хорошо. Надеюсь. помог. если проблема останется, то пишите. Буду разбираться.
Так же ещё заметил косяк в исходнике, так текстовое поле, которое находится напротив кнопки обзор, такого же цвета как фон, буквы не видно, надо поменять)) Удачи!

Rain...
15.07.10 | 20:55
0 баллов

на всякий случай всё перепроверил. у меня всё работает. вот ссылка на исправленый архив
Ссылка
а вот ссылка на денвер Думаю, тоже не будет лишней
denver.rar

FlashER
15.07.10 | 21:14
0 баллов

Спасибо)

FlashER
15.07.10 | 21:17
0 баллов

А вот как осуществить простую загрузку картинки .jpg в флеш-проект?
Т.е. пользователь нажимает кнопку обзор и выбирает фотку, затем картинка загружается и появляется в центре экрана...
Надеюсь, Вы знате как это сделать! Очень нужно)))

Rain...
15.07.10 | 23:17
0 баллов

Пока не знаю, но могу попробовать разобраться))
Надеюсь, смогу помочь)))

Rain...
16.07.10 | 00:20
0 баллов

Итааак. Алелуя. во всём разобрался. Есть такой вариант.Можно придумать и другой, главное фантазия)))
находим в нашем аплоадере строчки с кодом где описано событие 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);

вот как-то так.
надеюсь помог.

Rain...
16.07.10 | 00:28
0 баллов

Кстати, уважаемый Flasher, я разобрался со всем этим добром очень просто. Волшебная коавиша F1.
Если не очень хорошо с английским, скачайте русский хелп. Честное слово во влеш хелпе есть практически вся необходима информация, не хуже большинства учебников. Я вообще всё по флэш. что знаю, только с этой кнопкой и выучил ещё в далёкие времена MX2004 Macromedia)))) Удачи и успехов!

Rain...
16.07.10 | 13:01
0 баллов

можно попробовать написать загрузку, если нет необходимости загружать картинку на сервер. Но не уверен, что это возможно.

 
 
 
 

Последние комментарии

Полезные ссылки

Реклама сайтов

Скидки на жемчуг и янтарь. Оптовая продажа жемчуга в москве. Индийские украшения и бижутерия.
Модные украшения, жемчуг. Посмотрите каталог ювелирной бижутерии на сайте. Скидки в мире жемчуга.