在我的Flash网络摄像头快照应用程序中保存图片

时间:2011-05-05 03:34:30

标签: php flash save webcam image

我制作了一个Flash网络摄像头应用程序,允许用户使用网络摄像头拍摄自己的照片。我已成功将照片保存在我的localhost中。但是,我想设置这些照片的名称。目前,照片名称由

生成
  
    

$ uniqueStamp = date('U');

  

我的Flash应用程序中还有一个文本字段,允许用户输入照片名称。例如,如果用户在文本字段中写入“MYPHOTONAME”,则将保存在我的localhost中的照片也将被命名为“MYPHOTONAME”。我如何在Flash和PHP中执行此操作?目前我遇到了一些问题,因为我无法将文本字符串发送给PHP。

这是我的快照代码,用于将快照发送到PHP并让PHP将其保存在我的localhost中:

  
    

imgBA = jpgEncoder.encode(imgBD1);

         

sendReq.​​data = imgBA;

         

sendLoader.load(sendReq);

  

这是我的PHP代码:

  
    

if(isset($ GLOBALS [“HTTP_RAW_POST_DATA”])){

         

$ photo = $ _POST ['photo'];

         

$ uniqueStamp = date('U');

         

$ filename = $ photo。$ uniqueStamp。“。jpg”;

         

$ fp = fopen('photos /'.$ filename,“wb”);

         

fwrite($ fp,$ GLOBALS ['HTTP_RAW_POST_DATA']);

         

fclose($ fp);

         

echo'filename = photos /'.$ filename。“& base =”。$ _ SERVER [“HTTP_HOST”]。dirname($ _ SERVER [“PHP_SELF”]);

         

}

  

正如你所看到的,我试图传入$ photo = $ _POST ['photo'];从flash到PHP然而我不知道确切的代码,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用此类org.lzyy.util.UploaderPostHelper.getPostData()来模拟HTTP上传(对FileReference执行相同的操作但使用生成的数据)

ActionScript方:

var urlRequest:URLRequest = new URLRequest();
urlRequest.url = uploadPath;
urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = UploadPostHelper.getPostData(file, parameters);
urlRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );

var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
//handler for succesful loading of request, ex: trace(urlLoader.data);
//Complete not mean image handling was a success
//Memory usage, type checking, security restriction etc. could produce errors
urlLoader.addEventListener(Event.COMPLETE, onComplete);
//handler for faulty loading of request
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onError);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
urlLoader.load(urlRequest);

和PHP方面一样,基本的图片上传处理:

<?php
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " already exists. ";
        }
        else
        {
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}
else
{
    echo "Invalid file";
}
?> 

只有一件事你不能做,就是听上传进展。