Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.10.2009, 15:03
mike711 вне форума Посмотреть профиль Отправить личное сообщение для mike711 Найти все сообщения от mike711
  № 1  
Ответить с цитированием
mike711

Регистрация: Dec 2006
Сообщений: 17
По умолчанию PHP и TextField focus для библиотеки

Здравствуйте, читал форум, но не нашёл точно того что мне надо.
Суть дела: давно мечтал написать модуль библиотеки, а тут друг подогнал мне хостинг, но без пхп Думал про JS, но решил попробовать на флеш+хмл — сразу появилась масса вопросов (Fl:10, AS:3)



1) наверно, очень наивный вопрос: Не имея серверного обработчика (PHP, ColdFusion)
загрузить файлы на сервер нереально? (я только через ФТП могу, ну может ещё Шелл)

2) попроще: получая имя файла оно бъётся на автора и название, по разделителю (= или -) но текстовые поля не реагируют на получение текста, иными словами CHANGE EVENT не наступает ((( Это видно на картинке: текст появился, но в errorer textField пусто, да и счётчики в углу по нулям (

Код AS3:
function err_text(event:Event):void {
	if(event.target == f_author){
		author_counter.text=f_author.length+"/"+f_author.maxChars
	}
	if(event.target == f_book){
		book_counter.text=f_book.length+"/"+f_book.maxChars
	}
 
	var a:String=f_author.text;
	var b:String=f_book.text;
	var d:String="комментария нет";
	if((f_desc.text!="your desc here\r") || (f_desc.text!="")){d="есть комментарий"}
	//а вот наконец и сам текст:
	errorer.htmlText="<font color=\"#999999\" face=\"Arial\" size=\"-4\">Автор: </font><a>"+a+"</a><font color=\"#999999\" face=\"Arial\" size=\"-4\">, Книга:</font> \u00ab"+b+"\u00bb "+s+", "+d;
}
addEventListener(FocusEvent.FOCUS_IN, light);
addEventListener(FocusEvent.FOCUS_OUT, out);
 
//добавлю таймер - буду знать сколько мин. заполняю одну форму
var myTimer:Timer = new Timer(1000);
myTimer.start();
function timerHandler(event:TimerEvent):void{
	var cc = myTimer.currentCount;
	if (cc>9){
		var min:int = cc/60;
		var sec:int = cc-(min*60);
		var secD:int = sec/10
		var secU:int = sec-(secD*10)
	}else{
		secD=0;
		secU=cc;
	}
	timer.text =min+":"+secD+secU;
}
myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
 
//поле комментариев — на картинке не показано
function desc_type(event:Event):void{
	desc_length.text=f_desc.length+" из "+f_desc.maxChars;
}
f_desc.addEventListener(Event.CHANGE, desc_type);
//хмм, а еще такой же листенер на др функцию етсь - объединить бы их
 
//выбор файла и загрузка — для первой кнопки
function up_list(event:Event):void{
	var archTypes:FileFilter = new FileFilter("ZIP files", "*.zip");
	var textTypes:FileFilter = new FileFilter("Text Files (txt rtf html htm fb2 fb3)", "*.txt; *.rtf; *html; *htm; *.fb2; *.fb3");
	var noType:FileFilter = new FileFilter("All files", "*.zip; *.txt; *.rtf; *html; *htm; *.fb2; *.fb3");
	var fileRef:FileReference = new FileReference();
 
		fileRef.addEventListener(Event.SELECT, selectHandler);
		fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
		fileRef.addEventListener(Event.COMPLETE, completeHandler);
		var myShape:Shape = new Shape();
		this.addChild(myShape);
		try{ 
			fileRef.browse([noType, archTypes, textTypes]);
		}
		catch (error:Error){
			trace("Unable to browse for files.");
		}
 
 
		function selectHandler(event:Event):void
			{
			var request:URLRequest = new URLRequest("http://127.0.0.1/library/fileUploadScript.php")
			        //создание серой линии прогрессбара на случай загрузки ещё файла
                                with(myShape.graphics){
				lineStyle(4, 0xcccccc);
				moveTo(9, 64);
				lineTo(289, 64);
			}
			//проверка на 3 Мб на загрузку — не больше
			if(fileRef.size>3145728){
				errorer.htmlText="Извините, файл больше 3 МБ, загрузка невозможна =(";}
			else if(fileRef.type==".zip"){
				errorer.htmlText="Извините, zip пока не поддерживаем";
			}
			else{			
				try{
					//попытка разбыить на имя и название
					var delimiter:Array = new Array(" = "," - ");
					for each (var item in delimiter){
						if(fileRef.name.search(item)!==-1){						
							f_author.text=fileRef.name.substring(0,fileRef.name.search(item));
							//начиная от = и до расширения - это имя книги
							f_book.text=fileRef.name.substring(fileRef.name.search(item)+3,fileRef.name.length-4);
						//errorer.htmlText.appendText(" угу!!");
						}
					}
 
					//аплоад перенести на кнопку сабмит
					fileRef.upload(request);
				trace("selected");
				}
				catch (error:Error)
				{
					trace("Unable to upload file.");
				}
			}
		}
 
 
                //зелёная линия прогрессБара
		function progressHandler(event:ProgressEvent):void
		{
			var file:FileReference = FileReference(event.target);
			myShape.graphics.lineStyle(4, 0x00aa00);
			myShape.graphics.moveTo(9, 64);
                        myShape.graphics.lineTo(9+(event.bytesLoaded/event.bytesTotal*280),64);
		}
 
 
		function completeHandler(event:Event):void
		{
			trace("uploaded");
			 //раз загружено - линия прогрессбара становится синей
			myShape.graphics.lineStyle(4, 0x0075bf);
			myShape.graphics.moveTo(9, 64);
			myShape.graphics.lineTo(289, 64);
 
		}
 
	}
up_file.addEventListener(MouseEvent.CLICK, up_list);
 
//при ручной записи автора, в errorer появится текст
f_author.addEventListener(Event.CHANGE, err_text);
f_book.addEventListener(Event.CHANGE, err_text);
f_desc.addEventListener(Event.CHANGE, err_text);
3) балуясь дома с загрузкой через пхп получаю кракозябры вместо русских букв, английские нормально ((

PHP код:
        move_uploaded_file($_FILES['Filedata']['tmp_name'], "./".$_FILES['Filedata']['name']);

$directory opendir('./');
$files = array();
while (
$file readdir($directory))
{
    
array_push($files, array('./i'.$filefilectime('./'.$file)));
}
usort($filessorter);
print_r($files);
closedir($directory);

function 
sorter($a$b)
{
    if (
$a[1] == $b[1])
    {
        return 
0;
    }
    else
    {
        return (
$a[1] < $b[1]) ? -1;
    }

Итак: аплоад без пхп, почему чейндж не наступает, кодировка?
+ Если у меня явные косяки в коде — подскажите где плз и как оптимизировать, я не так давно этим занимаюсь


Последний раз редактировалось mike711; 06.10.2009 в 15:34.
Старый 06.10.2009, 15:15
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 2  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
файл должен принять серверный скрипт, любой. Если сервер принадлежит вашему другу, пусть установит хоть php. Без серверной части ниче работать не будет.
__________________
Гоночка

Старый 06.10.2009, 15:35
mike711 вне форума Посмотреть профиль Отправить личное сообщение для mike711 Найти все сообщения от mike711
  № 3  
Ответить с цитированием
mike711

Регистрация: Dec 2006
Сообщений: 17
если он установит ПХП, пропадёт смысл Флеша — и с архивами и с загрузкой и с БД он работает лучше — смогу использовать MySQL и т.д.

Старый 06.10.2009, 16:30
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 4  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
"и с архивами и с загрузкой и с БД" флэш никак не работает без посторонней помощи. В чем вы видите смысл флэша в вашей ситуации - непонятно.

Старый 06.10.2009, 17:17
mike711 вне форума Посмотреть профиль Отправить личное сообщение для mike711 Найти все сообщения от mike711
  № 5  
Ответить с цитированием
mike711

Регистрация: Dec 2006
Сообщений: 17
я надеюсь, fzip мне поможет с архивами а поскольку «БД» только для меня, устроит и XML, —
я просто ищу наилучшее решение, не включающее php
Гораздо сложнее с загрузкой файла — тут хошь не хошь, я так понял, серверный скрипт нужен
Я понимаю, что взялся закручивать молотком шурупы, но всё-таки, не надо меня холиварить, кто-нибудь, ответьте пожалуйста, по существу 3-х моих вопросов


Последний раз редактировалось mike711; 06.10.2009 в 17:20.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
php , upload

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.