Сохранение изображения в моем приложении для создания снимков с веб-камеры - PullRequest
0 голосов
/ 05 мая 2011

Я сделал флэш-приложение для веб-камеры, чтобы пользователь мог сфотографировать себя с помощью веб-камеры.Я успешно сохранил фотографию на моем локальном хосте.Тем не менее, я хотел бы установить названия этих фотографий.В настоящее время имена фотографий генерируются с помощью

$ uniqueStamp = date ('U');

У меня также есть текстовое поле в моей вспышкеприложение, которое позволяет вводить данные от пользователя для имени фотографии.Например, если пользователь напишет «MYPHOTONAME» в текстовом поле, фотография, которая будет сохранена на моем локальном хосте, также будет называться «MYPHOTONAME».Как мне сделать это во Flash и в PHP?В настоящее время у меня возникают некоторые проблемы, потому что я не могу отправить строку текстового поля в PHP.

Вот мой флэш-код, чтобы отправить снимок в PHP и позволить PHP сохранить его на моем локальном хосте:

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 голосов
/ 05 мая 2011

Вы можете использовать этот класс 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";
}
?> 

Единственное, что вы не можете сделать, - это прослушивание загрузки.

...