Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Как через as3 выбрать файл и передать его php для загрузки на ftp (http://www.flasher.ru/forum/showthread.php?t=171526)

metsys 17.11.2011 19:03

Как через as3 выбрать файл и передать его php для загрузки на ftp
 
Хотелось бы узнать как реализовать сиё безобразие. Мне нужно что бы была флешка с кнопкой "выбрать", после того как нажимаю её, у меня открывается браузер и я через него выбираю файл на ПК, нажимаю "открыть" или "сохранить" и у меня при помощи amfphp передаются данные о том какой файл я выбрал и запускается ф-ция php загружающая файл на localhost(на котором находится мой php файл).

Genzo 17.11.2011 19:11

Во флеше FileReference.browse ,на php http://www.sephiroth.it/tutorials/fl...php_bytearray/

или без AmfPHP http://help.adobe.com/ru_RU/FlashPla...l#upload%28%29

metsys 29.11.2011 21:12

Делаю следующим образом:
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                          xmlns:s="library://ns.adobe.com/flex/spark"
                          xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" width="718" height="546"
                          >
        <fx:Declarations>
                <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <s:ComboBox x="167" y="10" id="_slideNumber">
                <s:ArrayCollection>
                        <fx:String>Электроотопление</fx:String>
                        <fx:String>Электрофурнитура</fx:String>
                        <fx:String>Напольные покрытия</fx:String>
                        <fx:String>Натяжные потолки</fx:String>
                        <fx:String>Греющие стекла</fx:String>
                        <fx:String>Светильники</fx:String>
                </s:ArrayCollection>
        </s:ComboBox>
        <s:TextInput x="167" y="41" width="146" id="_pageName"/>
        <s:Label x="10" y="41" text="Page Name" height="22" width="109" verticalAlign="middle"/>
        <s:Label x="10" y="10" text="Choose slide" height="22" width="109" verticalAlign="middle"/>
        <mx:RichTextEditor x="167" y="71" dropShadowVisible="false" width="530" height="248" id="_pageText">
        </mx:RichTextEditor>
        <s:Label x="10" y="71" text="Page text" height="22" width="109" verticalAlign="middle"/>
        <s:Button x="10" y="327" label="Select image"  id="_downloadImage" click="{chooseImage()}"/>
        <mx:Image x="167" y="327" width="260" height="180" id="_imageHolder"/>
        <s:Button x="627" y="515" label="Save" id="_saveButton" activate="false" click="saveData()"/>
 
 
        <fx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        import mx.controls.Alert;
 
 
                        private var _fr:FileReference=new FileReference();
                        private var _ar:Array=new Array();
 
                        private function saveData():void
                        {
                                if(
                                        _slideNumber.selectedIndex>(-1)
                                        &&
                                        _pageName.text.length>0
                                        &&
                                        _pageText.htmlText.length>0
                                        &&
                                        _fr.data!=null
                                  )
                                {
 
                                        var imgUrl:String="http://site.com/flash/SlideGallery/data/images/"+_fr.name;
                                        _ar=[
                                                                        _slideNumber.selectedIndex,                //0
                                                                        _slideNumber.selectedItem,                //1
                                                                        _pageName.text,                                        //2
                                                                        _pageText.htmlText,                                //3
                                                                        imgUrl,                                                        //4
                                                                        _fr.name                                                //5
                                                                  ];
                                        _ar.push(_fr.data);
                                        Alert.show(String(_ar[6].length), "");
                                        var gw:NetConnection = new NetConnection();
                                        var res:Responder = new Responder(resultFunc, faultFunc);
                                        gw.connect("http://site.com/amfphp/gateway.php");
                                        gw.call("SlideGalleryAdmin.SaveData_Func", res, _ar);
                                }
                                else
                                {
                                        Alert.show("Nope!", "Error");
                                }
                        }
 
 
 
                        private function chooseImage():void
                        {
                                _fr.browse();
                                _fr.addEventListener(Event.SELECT, showSelectedPicture);
                        }
 
 
 
                        private function showSelectedPicture(e:Event):void
                        {
                                _fr.load();
                                _fr.addEventListener(Event.COMPLETE, loadImage);
                        }
 
 
 
                        private function loadImage(e:Event):void
                        {
                                var loader:Loader=new Loader();
                                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
                                loader.loadBytes(_fr.data);
                        }
 
 
 
                        private function imageLoaded(e:Event):void
                        {
                                var content:* = e.target.content;
                                var BMPData:BitmapData = new BitmapData(_imageHolder.width, _imageHolder.height);
                                var UIMatrix:Matrix = new Matrix();
                                BMPData.draw(content, UIMatrix);
                                /*
                                var bmd:BitmapData=new BitmapData(_imageHolder.width, _imageHolder.height);
                                var rect:Rectangle=new Rectangle(0, 0, _imageHolder.width, _imageHolder.height);
                                bmd.setPixels(rect, _fr.data);*/

                                _imageHolder.source=new Bitmap(BMPData);
                        }
 
 
 
                        //Если ответ от сервера не получен - выводим Alert сообщающий об ошибке
                        private function faultFunc(responds:Object):void
                        {
                                Alert.show("F*ck", "Error");
                        }
 
 
 
 
                        //проверочная ф-ция на то что сервер отвечает
                        private function resultFunc(responds:Object):void
                        {
                                //var arr:Array=responds;
                                Alert.show(String(responds), "Message");
                        }
                ]]>
        </fx:Script>
</s:Application>



php
PHP код:

<?php
    
class SlideGalleryAdmin
    
{
        
        function 
SaveData_Func($ar)
        {
            include (
"Config.php");

            
error_reporting(0);

            
$dbconnect = mysql_connect ($host, $user, $pass);
            
mysql_set_charset("utf8");

            if (!
$dbconnect)
            {
                return 
"Access denide";
            }


            if(@
mysql_select_db($db))
            {
                
$saveData=mysql_query("INSERT INTO
                                            table (`slide_number`, `slide_name`, `page_title`, `page_text`, `page_image_url`)
                                            VALUES
                                            ('"
.$ar[0]."', '".$ar[1]."', '".$ar[2]."', '".$ar[3]."', '".$ar[4]."')");





                
file_put_contents( $_SERVER['DOCUMENT_ROOT'] . '/flash/SlideGallery/data/images/' .$ar[5], $ar[6]);
                


                return 
"ok";
            }
            else
            {
                return 
"DB denide";
            }
        }
    }
?>

в итоге на ftp файл размером 0 байт ... что не так?


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

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