vini123

博客园 首页 新随笔 联系 订阅 管理

全部整在一起,有点乱 。。。

AS代码:

package 
{
    import flash.display.Sprite;
    import flash.media.Camera;
    import flash.media.Video;
    import flash.events.Event;
    import flash.events.StatusEvent;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
    import flash.events.SecurityErrorEvent;
    import flash.events.MouseEvent;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.geom.Matrix;
    import mx.graphics.codec.JPEGEncoder;
    import flash.utils.ByteArray;
    import flash.net.LocalConnection;
    import flash.net.URLRequestHeader;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.net.URLRequestMethod;
    import flash.net.URLVariables;
    import flash.net.FileFilter;
    import flash.net.FileReference;
    import flash.net.FileReferenceList;


    [SWF(width = "720",height = "450",backgroundColor = "#445566")]
    public class Main extends Sprite
    {
        private var cam:Camera;
        private var vid:Video;
        private var upMc;
        private var bitmap:Bitmap;
        private var bitmapData:BitmapData;
        private var mcArr = [];

        private var frl:FileReferenceList;
        private var uploadURL;

        public function Main():void
        {
            Init();
            frl=new FileReferenceList();
            frl.addEventListener(Event.SELECT,selectHandler);
            frl.addEventListener(Event.CANCEL,cancelHandler);
        }
        private function Init()
        {
            getCamer();
        }
        private function getCamer()
        {
            cam = Camera.getCamera();
            cam.addEventListener(StatusEvent.STATUS,statusHandler);
            cam.setMode(384,216,12);
            cam.setQuality(0,100);
            vid = new Video  ;
            vid.width = 384;
            vid.height = 216;
            vid.attachCamera(cam);
            addChild(vid);
            vid.x = stage.stageWidth / 2 - vid.width / 2;
            vid.y = stage.stageHeight / 2 - vid.height / 2;

            bitmap = new Bitmap();
            bitmapData = new BitmapData(vid.width,vid.height,true,0);
        }
        private function statusHandler(e:StatusEvent)
        {
            switch (e.code)
            {
                case "Camera.Unmuted" :
                    uploadFun(true);
                    break;
                case "Camera.Muted" :
                    uploadFun(false);
                    break;
                default :
                    break;
            }
        }

        private function uploadFun(right:Boolean)
        {
            upMc=new UpMc();
            addChild(upMc);
            visibleBtn();
            if (right)
            {
                upMc.x = vid.x + vid.width - upMc.width;
                upMc.y = vid.y + 10 + vid.height;
                pleaseScreen();
            }
            else
            {
                upMc.x = stage.stageHeight / 2 - upMc.width / 2;
                upMc.y = stage.stageHeight / 2 + upMc.height / 2;
                pleaseLoad();
            }
        }

        private function pleaseLoad()
        {
            upMc.browseBtn.visible = true;
            upMc.browseBtn.addEventListener(MouseEvent.CLICK,clickHandler);
            mcArr.push(upMc.browseBtn);
        }
        private function upDataImg(type:String)
        {
            switch (type)
            {
                case "1" :
                    var jpgSource:BitmapData = new BitmapData(bitmap.width,bitmap.height,true,0);
                    jpgSource.draw(bitmap);
                    var jpgEncoder:JPEGEncoder = new JPEGEncoder(300);
                    var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);

                    var domain:String = "localhost";
                    var LocalConn:LocalConnection=new LocalConnection();
                    domain = LocalConn.domain;

                    var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");

                    var jpgURLRequest:URLRequest=new URLRequest("http://"+domain+"/vini/up/jpg_upload.php?name="+ "gogo");
                    jpgURLRequest.requestHeaders.push(header);
                    jpgURLRequest.method = URLRequestMethod.POST;
                    jpgURLRequest.data = jpgStream;

                    var myVariables:URLVariables=new URLVariables();//这个用不到了。。

                    var loader:URLLoader=new URLLoader();
                    loader.load(jpgURLRequest);
                    loader.addEventListener(Event.COMPLETE,uploadCompleteHandler);
                    break;
                default :
                    break;
            }
        }

        private function uploadCompleteHandler(e:Event)
        {
            trace("图片上传成功了,这里要给数据库添加记录吧!");
        }

        public function clickHandler(e:MouseEvent)
        {

            switch (e.target.name)
            {
                case "screenBtn" :
                    removeEvent();
                    bitmapData.draw(vid);
                    bitmap.bitmapData = bitmapData;
                    bitmap.width = vid.width;
                    bitmap.height = vid.height;
                    removeChild(vid);
                    addChild(bitmap);
                    bitmap.x = stage.stageWidth / 2 - bitmap.width / 2;
                    bitmap.y = stage.stageHeight / 2 - bitmap.height / 2;
                    upMc.mesTxt.text = "请上传图片或重新截图";

                    upMc.uploadBtn.visible = true;
                    upMc.uploadBtn.addEventListener(MouseEvent.CLICK,clickHandler);
                    mcArr.push(upMc.uploadBtn);

                    upMc.retakeBtn.visible = true;
                    upMc.retakeBtn.addEventListener(MouseEvent.CLICK,clickHandler);
                    mcArr.push(upMc.retakeBtn);

                    upMc.retakeBtn.x = upMc.uploadBtn.x + upMc.retakeBtn.width + 5;
                    break;
                case "uploadBtn" :
                    removeEvent();
                    upMc.mesTxt.text = "图片开始上传中";
                    upDataImg("1");
                    break;
                case "retakeBtn" :
                    removeEvent();
                    removeChild(bitmap);
                    addChild(vid);
                    pleaseScreen();
                    break;
                case "browseBtn" :
                    //removeEvent();
                    uploadhandler("图片档案(*.jpg;*.gif;*.png)|*.jpg;*.gif;*.png");
                    break;
            }
        }


        public function uploadhandler(filter_str,type:String=''):void
        {


            var up_name = get_pic_name(5)+'.'+ getFileExt(filter_str);
            trace(up_name);
            uploadURL = new URLRequest('http://localhost/vini/up/upload.php?tg_name='+up_name+'&filepath=loadImg/');
            //uploadURL = new URLRequest('http://localhost/zh_cn/ebook/upload.php?tg_name='+up_name+'&filepath=http://www.cnblogs.com/vini/up/loadImg/');
            var tmp_arr:Array = filter_str.split('|');
            trace(tmp_arr);
            var filter:FileFilter = new FileFilter(tmp_arr[0],tmp_arr[1]);
            frl.browse([filter]);
        }



        private function selectHandler(e:Event)
        {
            trace("可以上传么");
            var fileReferenceList:FileReferenceList = e.target as FileReferenceList;
            var fileList:Array = fileReferenceList.fileList;
            for (var i:uint = 0; i < 1; i++)
            {
                // org is : i < fileList.length : now just upload one 
                //control.test_txt.appendText("fileList["+i+"]:"+fileList[i].name + "\n");
                addPendingFile(fileList[i]);
            }
        }

        private function addPendingFile(file:FileReference):void
        {
            //control.load_file_bar.visible = true;  //显示加载进度

            file.addEventListener(Event.OPEN, openHandler);
            file.addEventListener(Event.COMPLETE, completeHandler);
            file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            file.upload(uploadURL);
            trace("开始上传");
        }


        private function openHandler(event:Event):void
        {
            var file:FileReference = FileReference(event.target);
            trace("开始了么");
            //control.load_file_bar.ready(file.name);
        }
        private function completeHandler(event:Event):void
        {
            trace("aaa"+event.target.data);
            return;
            var file:FileReference = FileReference(event.target);
            trace(file.name);
        }

        private function progressHandler(event:ProgressEvent):void
        {
            trace("过程过程");
            var file:FileReference = FileReference(event.target);
            if (event.bytesLoaded / event.bytesTotal < 1)
            {
                //control.load_file_bar.ready(file.name);
            }
            else
            {
                //control.load_file_bar.updateinfo(file.name, event.bytesLoaded, event.bytesTotal);
            }
        }
        private function ioErrorHandler(event:Event):void
        {
            trace("错误一");
            //control.test_txt.appendText("ioErrorHandler \n");
        }
        private function securityErrorHandler(event:Event):void
        {
            trace("错误二");
            //control.test_txt.appendText("securityErrorHandler \n");
        }

        private function cancelHandler(e:Event)
        {

        }

        private function pleaseScreen()
        {
            upMc.mesTxt.text = "请截图";
            upMc.screenBtn.visible = true;
            upMc.screenBtn.addEventListener(MouseEvent.CLICK,clickHandler);
            mcArr.push(upMc.screenBtn);
        }

        private function removeEvent()
        {
            var len:int = mcArr.length;
            for (var i=0; i<len; i++)
            {
                mcArr[i].visible = false;
                mcArr[i].removeEventListener(MouseEvent.CLICK,clickHandler);
            }
            mcArr = [];
        }

        private function visibleBtn()
        {
            upMc.retakeBtn.visible = false;
            upMc.screenBtn.visible = false;
            upMc.browseBtn.visible = false;
            upMc.uploadBtn.visible = false;
        }

        private function get_pic_name(no=null)
        {
            var nowtime:Date = new Date();
            var str:String = timeformate(nowtime.getFullYear());
            str = str.concat(timeformate(nowtime.getMonth()+1),timeformate(nowtime.getDate())
            ,timeformate(nowtime.getHours()),timeformate(nowtime.getMinutes()),timeformate(nowtime.getSeconds()));
            if (no==null)
            {
                return str;
            }
            for (var i:uint=0; i<no; i++)
            {
                var ch:Number = randRange(0,51);

                if (ch>=26)
                {
                    str += String.fromCharCode(97+ch-26);
                }
                else
                {
                    str += String.fromCharCode(65+ch);
                }
            }
            return str;
        }

        private function getFileExt(file_name)
        {
            var file_array = file_name.split(".");
            trace("vvv:"+file_array[file_array.length - 1])
            return file_array[file_array.length - 1];
        }

        private function timeformate(num):String
        {
            if (num < 10)
            {
                return ("0" + num);
            }
            return num;

        }

        private function randRange(min:Number, max:Number):Number
        {
            var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
            return randomNum;
        }
    }
}

 

php代码:

<?php
function getFileExt($file_name){
            while($dot = strpos($file_name, "."))
            {
                    $file_name = substr($file_name, $dot+1);
            }
            return $file_name;
}

function get_pic_name($no=null){

         $str=date('YmdHis');
         if(empty($no))
         {
             return $str; 
         }    
            for($i=0;$i<$no;$i++)
            {
            $ch=rand(0, 51);    
                if($ch>=26)
                {
                $str.=chr(97+$ch-26);
                }else 
                {
                $str.=chr(65+$ch);
                }
            }
         return $str;    
}
        
        
        
if(!empty($_GET['filepath'])){
    $uploaddir = $_GET['filepath'];
}else{
    $uploaddir = 'uploads/';
}
$filename = $_FILES['Filedata']['name'];
$randname = get_pic_name(5);
$up_name = $randname . '.' . getFileExt($filename);
if(!empty($_GET['tg_name']))
{
        $up_name  = $_GET['tg_name'];
}
$uploadfile = $uploaddir . $up_name;
//$uploadfile='loadImg/';
if(move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadfile)){
    chmod($uploadfile,0777);
}
//

?>
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) 
{ 
// 腕善 byteArray 杅擂
$png = $GLOBALS["HTTP_RAW_POST_DATA"];
 
/**迡善督昢腔images恅璃標狟**/
$filejpg = fopen("screenImg/".$_GET['name'].".jpg","w");//湖羲恅璃袧掘迡
fwrite($filejpg,$png);//迡
fclose($filejpg);//壽敕
 
 
//$filegif = fopen("ebookImage/book/icon_".$_GET['name'].".gif","w");//湖羲恅璃袧掘迡
//fwrite($filegif,$png);//迡
//fclose($filegif);//壽敕

/**殿隙陓洘**/
echo "ok";
}
?>
posted on 2012-05-21 17:20  黑夜丶残枫  阅读(878)  评论(0)    收藏  举报