![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+2 07.04.09]
Регистрация: Feb 2009
Сообщений: 70
|
как загружать файлы на сервер?
у меня есть пример на as2 а как на as3 я и понтия не имею. пыталась переделать, но не получается. может кто ссылку даст или подскажет как нибуть ![]() |
|
|||||
|
ниже 10й версии флеш не может сам что-то загрузить с компа юзера, может только попросить сделать это браузер, см. FileReference.upload (AS3 вариант ничем принципиально не отличается от AS2-версии)
в 10й версии может и сам загрузить (см. FileReference.load), дальше дело хозяйское - можно и серверу полученные данные оправить (см. URLLoader) примеры в доках имеются, а в сети и подавно.. |
|
|||||
|
[+2 07.04.09]
Регистрация: Feb 2009
Сообщений: 70
|
я все равно е понимаю как это делается.
когда исправляю то все время разные ошибки выдаются. посмотрите исходник плиз, как это можно переделать на as3. |
|
|||||
|
>>посмотрите исходник плиз, как это можно переделать на as3.
Не смотрел, тк. имею уже рабочую на AS3 Для тестов нужна программка Apache Пишем для Flex или для Adobe Flash CS4 (версия плеера 10) такой документ класс //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 файл 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. |
|
|||||
|
[+2 07.04.09]
Регистрация: Feb 2009
Сообщений: 70
|
спасибо!!! работает!!!
а как сделать так чтоб загруженные фото сразу в фото галерее отображались? |
|
|||||
|
[+2 07.04.09]
Регистрация: Feb 2009
Сообщений: 70
|
ну кикаких копок не нужно
![]() мне нужно только чтоб это фото тут же появлялось в фотогалерее. и его можно было бы посмотеть, и ничего больше. нет не боюсь а чего боятся? |
|
|||||
|
ну так нужно галереи подсунуть 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 |
|
|||||
|
[+2 07.04.09]
Регистрация: Feb 2009
Сообщений: 70
|
а как сделать чтоб фото загружались каждая в отдельный контейнер и при этом выглядела как маленькая превьюшка, а именно меняла размер.
а то у меня чтото странно получается с scаleX и scaleY. фото становится громадным. ![]() |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 357
|
а как правильно изменить размер в самом PHP? у меня есть код, но на выходе получается строка, а не jpeg. после добавления header("Content-type: image/jpeg"); php пишет, что заголовки уже добавлены и по-прежнему возвращает строку.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:53. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| upload |
|
|