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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.02.2009, 15:48
droch_fhoula вне форума Посмотреть профиль Отправить личное сообщение для droch_fhoula Найти все сообщения от droch_fhoula
  № 1  
Ответить с цитированием
droch_fhoula
[+2 07.04.09]

Регистрация: Feb 2009
Сообщений: 70
По умолчанию загрузка файлов через флэш на сервер

как загружать файлы на сервер?
у меня есть пример на as2 а как на as3 я и понтия не имею.
пыталась переделать, но не получается.
может кто ссылку даст или подскажет как нибуть

Старый 13.02.2009, 16:36
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ниже 10й версии флеш не может сам что-то загрузить с компа юзера, может только попросить сделать это браузер, см. FileReference.upload (AS3 вариант ничем принципиально не отличается от AS2-версии)
в 10й версии может и сам загрузить (см. FileReference.load), дальше дело хозяйское - можно и серверу полученные данные оправить (см. URLLoader)

примеры в доках имеются, а в сети и подавно..

Старый 13.02.2009, 17:56
droch_fhoula вне форума Посмотреть профиль Отправить личное сообщение для droch_fhoula Найти все сообщения от droch_fhoula
  № 3  
Ответить с цитированием
droch_fhoula
[+2 07.04.09]

Регистрация: Feb 2009
Сообщений: 70
я все равно е понимаю как это делается.
когда исправляю то все время разные ошибки выдаются.
посмотрите исходник плиз, как это можно переделать на as3.
Вложения
Тип файла: rar upload.rar (13.5 Кб, 965 просмотров)

Старый 14.02.2009, 09:23
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>>посмотрите исходник плиз, как это можно переделать на as3.
Не смотрел, тк. имею уже рабочую на AS3

Для тестов нужна программка Apache
Пишем для Flex или для Adobe Flash CS4 (версия плеера 10) такой документ класс
Код AS3:
//LoadCompFileDocAndSendToServer
package {
	import flash.display.*;
	import flash.text.*;
	import flash.net.*;
	import flash.events.*;
	import flash.utils.*;
 
	public class LoadCompFileDocAndSendToServer extends Sprite {
		private var loader:Loader,
			file:FileReference,
			txt:TextField,
			sender:ByteArray,
			i:int,
			fileName:String,
			request:URLRequest,
			urlLoader: URLLoader,
			strFileNoEx:String, 
			reg:RegExp;
 
 
		public function LoadCompFileDocAndSendToServer() {
			txt=new TextField;
			txt.autoSize=TextFieldAutoSize.LEFT;
			file=new FileReference;
			// file.browse(getTypes());
			file.addEventListener(Event.COMPLETE,onComplete);
			file.addEventListener(Event.SELECT,onSelectFile);
			//onShowloadDialog();
			txt.htmlText="<a href='event:load'><u>Загрузить файл c компьютера</a>;";
 
			addChild(txt);//добавить на рабочее поле
			txt.autoSize=TextFieldAutoSize.LEFT;
			addChild(txt);
			txt.addEventListener(TextEvent.LINK,txtLinkFunc);
			urlLoader = new URLLoader();
			urlLoader.addEventListener(Event.COMPLETE,completeHandlerUrlLoader);
		}
 
		private function txtLinkFunc(evt:TextEvent):void {
			if (evt.text == 'load') {
				onShowloadDialog();
			}
		}
 
		//отображение диалога открытия файла
		private function onShowloadDialog(event:Event=null):void {
			var fileFilter:FileFilter=new FileFilter("Images","*.jpg");
			try {
				file.browse([fileFilter]);
			}
			//catch(illegalOperation:IllegalOperationError){ 
			catch (e:Error) {
			}
		}
		//при выборе файла загружаем его
		private function onSelectFile(event:Event):void {
			try {
				file.load();
			}
			// catch(illegalOperation:IllegalOperationError) 
			catch (e:Error) {
			}
		}
		private function onComplete(event:Event):void {
			addChild(loader=new Loader  );
			loader.loadBytes(file.data);
			loader.y = 20;
 
			//отправляем на сервер
			reg = /\.\w+/;//регулярка вылавливающая расширение файла
			strFileNoEx = file.name.replace(reg,'');
			trace(strFileNoEx);//имя загруженного файла без расширения
 
			request = new URLRequest(
			"http://localhost/CONTENT_PATH/save-file.php?name="+strFileNoEx+"&d="+new Date().getTime());
			request.data = file.data;
			request.method = URLRequestMethod.POST;
			request.contentType = 'application/octet-stream';
			urlLoader.load(request);
 
		}
		private function completeHandlerUrlLoader(event:Event):void {
			trace(urlLoader.data);
			addChild(txt=new TextField);
			txt.autoSize=TextFieldAutoSize.LEFT;
			txt.y = 200;
			txt.htmlText="<font color='#ff0000'  size='30'> Файл на сервере";
		}
	}
}
php скрипт принимает имя файла без расширения и добавляет расширения jpg
также понадобится php файл save-file.php

Код:
<?php
	//save-file.php
	$fileData = $GLOBALS[HTTP_RAW_POST_DATA];
	$fileName = ''.$_GET['name'].'.jpg';
	$fp = fopen($fileName, "w");
	fwrite($fp,$fileData);
	fclose($fp);
	echo "file write - OK ".$fileName;
?>

Пример как это работает (загрузите с компьютера jpg и он автоматом залетит мне на сайт)
После выбора файла пройдет некоторое время, должна появиться надпись файл на сервере.

http://www.murmadillo.tut.su/m/galle...ndToServer.swf

Посмотреть загрузился ли ваш jpg файл мне на сайт можно перейдя по ссылке

http://www.murmadillo.tut.su/m/gallery/


Последний раз редактировалось iNils; 07.10.2011 в 01:32.
Старый 14.02.2009, 16:06
droch_fhoula вне форума Посмотреть профиль Отправить личное сообщение для droch_fhoula Найти все сообщения от droch_fhoula
  № 5  
Ответить с цитированием
droch_fhoula
[+2 07.04.09]

Регистрация: Feb 2009
Сообщений: 70
спасибо!!! работает!!!
а как сделать так чтоб загруженные фото сразу в фото галерее отображались?

Старый 14.02.2009, 17:40
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 6  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>>а как сделать так чтоб загруженные фото сразу в фото галерее отображались?
В смысле галерейка с такими кнопочками:
[назад] [вперед] [стоп] [авто] [добавить рисунок]
А не боитесь???

Старый 14.02.2009, 18:45
droch_fhoula вне форума Посмотреть профиль Отправить личное сообщение для droch_fhoula Найти все сообщения от droch_fhoula
  № 7  
Ответить с цитированием
droch_fhoula
[+2 07.04.09]

Регистрация: Feb 2009
Сообщений: 70
ну кикаких копок не нужно
мне нужно только чтоб это фото тут же появлялось в фотогалерее.
и его можно было бы посмотеть, и ничего больше.
нет не боюсь а чего боятся?

Старый 15.02.2009, 01:08
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 8  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
ну так нужно галереи подсунуть php файл, который вернет jpg
типа такого
Код:
<?php
//return-picture.php
$dd=opendir(getcwd());
$my_string="";
while (true)
{
$cur=readdir($dd);
if ($cur=="") break;
if ( (strpos($cur,"jpg")==true) or (strpos($cur,"JPG")==true) )
$my_string=$my_string.$cur."|";
}
closedir($dd);
$my_string=$my_string;
echo $my_string;
?>
Загрузить его в галерею можно как-так (документ класс)
Код:
package {
	import flash.display.*; import flash.events.*; import flash.ui.*; import flash.text.*;
	import flash.net.*;import fl.transitions.*;import fl.transitions.easing.*;import flash.utils.*;

	public class DocGalery extends Sprite {
		private var loader:URLLoader,
			pLoader:Loader,req:URLRequest,count:int,position:int,path:String,picArr:Array,
			sp:Sprite,tween:Tween,tweenTimer:Tween,tr:Boolean,i:int,urlLoader:URLLoader,
			prePathStr:String,allPicLoadingTr:Boolean,finalImag:int,
			actTw:Boolean,nextPreCont:int,pattern:RegExp = /\w+\.\w+/,result:Object;

		public function DocGalery() {
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;

			actTw = allPicLoadingTr = false;
			nextPreCont = finalImag = 0;
			//addChild(txt);
			//загрузка имен файлов через php файл
			prePathStr = "";// "http://localhost/CONTENT_PATH/gallery/";//;
			var phpFileStr:String = "return-picture.php?"+new Date().getTime();
			var pictURLReq:URLRequest = new URLRequest(prePathStr + phpFileStr);
			urlLoader = new URLLoader();
			urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			urlLoader.addEventListener(Event.COMPLETE, urlLoaderCompleteHandler);
			urlLoader.addEventListener(ProgressEvent.PROGRESS,progressHandler);
			urlLoader.load(pictURLReq);
			//GoGalery();
		}
		private function progressHandler(event:ProgressEvent):void {
			trace(" progressHandler loaded: " + event.bytesLoaded + " total: " + event.bytesTotal);
		}

		private function urlLoaderCompleteHandler(event:Event):void {
			var strUnSort:String = new String(urlLoader.data);
			var pictureArr:Array = strUnSort.split("|");
			//var correctArr:Array = [];
			picArr = [];
			for (i = 0; i < pictureArr.length - 1; i++) {
				result = pattern.exec(pictureArr[i]);
				trace(result);
				if (result!=null) if (result.toString() == pictureArr[i]) picArr.push(pictureArr[i]);
			}
			trace(picArr);
			//имена файлов загружены - запускаем галерею
			trace(strUnSort);
			goGalery();
		}

		private function goGalery():void {
			path = prePathStr;
			req = new URLRequest();
			count = 0;
			position = 0;

			onward();
			tween = new Tween( { i:0 }, "i", Regular.easeOut, 0, 1, 5, true);
			tweenTimer = new Tween( { i:0 }, "i", Regular.easeOut, 0, 1, 5, true);
			tween.stop();
			tweenTimer.stop();
			tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenChange);
			tween.addEventListener(TweenEvent.MOTION_FINISH, finTweenFunc);
			tweenTimer.addEventListener(TweenEvent.MOTION_FINISH, finTimerFunc);
		}
		private function loaderComplete(evt:Event):void {
			trace(req.url);
			if (loader.bytesTotal>3000){
				sp = new Sprite();
				sp.graphics.beginFill(0xffffff);
				sp.graphics.drawRect(0, 0, 1500, 800);
				pLoader = new Loader();
				pLoader.loadBytes(loader.data as ByteArray);
				sp.addChild(pLoader);
				addChild(sp);
				sp.alpha = 0;
				finalImag++;
				if (actTw == false) {
					nextPreCont++;
					tween.stop();
					tween.start();
				}
				count++;
				onward();
			}
			else {
				count++;
				onward();
			}
		}
		private function ioErrorHandler(event:IOErrorEvent):void {
			count++;
			onward();
		}

		private function onward():void {
			if (count < picArr.length) {
				trace('Гружу');
				loader = new URLLoader();
				loader.dataFormat= URLLoaderDataFormat.BINARY;
				req.url = path + picArr[count];// +'?=' + new Date().getTime();
				trace(req.url);
				loader.load(req);
				loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
				loader.addEventListener(ProgressEvent.PROGRESS,progressHandler);
				loader.addEventListener(Event.COMPLETE,loaderComplete);
			}
			if (count == picArr.length) {
				allPicLoadingTr = true;
				tween.start();
				position = nextPreCont;
			}
		}
		private function tweenChange(evt:TweenEvent):void {
			actTw = true;
			if (allPicLoadingTr == true){
				sp = this.getChildAt(position) as Sprite;
				sp.alpha = tween.obj.i;
			}
			if (allPicLoadingTr == false){
				try{sp = this.getChildAt(nextPreCont-1) as Sprite;
				sp.alpha = tween.obj.i;}catch(e:Error){}
			}
		}

		private function finTweenFunc(evt:TweenEvent):void {
			tweenTimer.start();
		}

		private function finTimerFunc(event:TweenEvent):void {
			actTw = false;
			if (allPicLoadingTr == true){
				position++;
				trace("finalImag " + finalImag + " " + "position " + position);
				if (position >= finalImag) {
					position = 0;
					for (i = 0; i < this.numChildren; i++) this.getChildAt(i).alpha = 0;
				}
				tween.start();
			}
		}
	}
}
Будет работать так:
http://www.murmadillo.tut.su/m/gallery/DocGalery.swf

Старый 15.02.2009, 12:19
droch_fhoula вне форума Посмотреть профиль Отправить личное сообщение для droch_fhoula Найти все сообщения от droch_fhoula
  № 9  
Ответить с цитированием
droch_fhoula
[+2 07.04.09]

Регистрация: Feb 2009
Сообщений: 70
а как сделать чтоб фото загружались каждая в отдельный контейнер и при этом выглядела как маленькая превьюшка, а именно меняла размер.
а то у меня чтото странно получается с scаleX и scaleY. фото становится громадным.

Старый 01.04.2009, 22:46
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 10  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
а как правильно изменить размер в самом PHP? у меня есть код, но на выходе получается строка, а не jpeg. после добавления header("Content-type: image/jpeg"); php пишет, что заголовки уже добавлены и по-прежнему возвращает строку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
upload

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

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


 


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


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