Показать сообщение отдельно
Старый 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.