Загрузить фото с iPhone на PHP с помощью PhoneGap - PullRequest
2 голосов
/ 13 марта 2011

У меня есть простая форма загрузки, работающая на PHP (работает в сети), а также я могу сделать снимок с iPhone с помощью PhoneGap (base64) и отобразить его на устройстве.

Но я не могувыясните, как загрузить его на мой сервер с помощью PHP.

Вот код, работающий на PHP:

INDEX.PHP

<?
//print_r($_POST);

if($_POST["action"] == "Upload Image")
{
unset($imagename);

if(!isset($_FILES) && isset($HTTP_POST_FILES))
$_FILES = $HTTP_POST_FILES;

if(!isset($_FILES['image_file']))
$error["image_file"] = "An image was not found.";


$imagename = basename($_FILES['image_file']['name']);
//echo $imagename;

if(empty($imagename))
$error["imagename"] = "The name of the image was not found.";

if(empty($error))
{
$newimage = "images/" . $imagename;
//echo $newimage;
$result = @move_uploaded_file($_FILES['image_file']['tmp_name'], $newimage);
if(empty($result))
$error["result"] = "There was an error moving the uploaded file.";
}

}

include("upload_form.php");

if(is_array($error))
{
while(list($key, $val) = each($error))
{
echo $val;
echo "<br>\n";
}
}

include("list_images.php");

?>

А вот два включения...

UPLOAD_FORM.PHP

<form method="POST" enctype="multipart/form-data" name="image_upload_form" action="<?$_SERVER["PHP_SELF"];?>">
<p><input type="file" name="image_file" size="20" value="beautiful.jpg"></p>
<p><input type="submit" value="Upload Image" name="action"></p>
</form>

LIST_IMAGES.PHP

<?
$handle = @opendir("images");

if(!empty($handle))
{
while(false !== ($file = readdir($handle)))
{
if(is_file("images/" . $file))
echo '<img src="images/' . $file . '"><br><br>';
}
}

closedir($handle);
?>

Вот код, работающий на iPhone 4 (iOS 4.2) в PhoneGap

INDEX.HTML (работает в каталоге WWW в PhoneGap)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <!-- Change this if you want to allow scaling -->
    <meta name="viewport" content="width=default-width; user-scalable=yes" />

    <meta http-equiv="Content-type" content="text/html; charset=utf-8">

    <link type="text/css" rel="stylesheet" href="style.css">



    <!-- iPad/iPhone specific css below, add after your main css >
    <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />        
    <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />       
    -->
    <!-- If you application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
    <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.min.js"></script>
    <script type="text/javascript" charset="utf-8">


    // If you want to prevent dragging, uncomment this section
    /*
    function preventBehavior(e) 
    { 
      e.preventDefault(); 
    };
    document.addEventListener("touchmove", preventBehavior, false);
    */

    function onBodyLoad()
    {
        document.addEventListener("deviceready",onDeviceReady,false);
    }

    /* When this function is called, PhoneGap has been initialized and is ready to roll */
    function onDeviceReady()
    {
        // do your thing!
    }


    function getPicture(sourceType)
    {
        var options = { quality: 10 };
        if (sourceType != undefined) {
            options["sourceType"] = sourceType;

        }
        // if no sourceType specified, the default is CAMERA 
        navigator.camera.getPicture(getPicture_Success, null, options);
    };

    function getPicture_Success(imageData)
    {
            //alert("getpic success");
            document.getElementById("test_img").src = "data:image/jpeg;base64," + imageData;


    }   



    </script>
  </head>
  <body onload="onBodyLoad()" marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>



            <h1>Camera</h1>

            <img style="width:80px;height:120px" id="test_img" src="" /> 

            <p>

            <!-- for testing, add the buttons below -->

            <button onclick="getPicture()">From Camera</button>

            <p>



            <button onclick="getPicture(PictureSourceType.PHOTO_LIBRARY)">From Photo Library</button>




  </body>
</html>
</html>

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

Удалось ли кому-либо загружать фотографии из PhoneGap / iPhone в PHP?Любой исходный код с обеих сторон будет с благодарностью.

Ответы [ 3 ]

3 голосов
/ 15 марта 2011

Опция Base64 на самом деле просто для удобства отображения на веб-странице.если он не нужен, не используйте его.

Я бы сказал, что лучше всего использовать FILE_URI вместо DATA_URL для Camera.DestinationType

, проверить http://docs.phonegap.com/phonegap_camera_camera.md.html длябольше информации

0 голосов
/ 02 февраля 2012

Используйте опции PHOTOLIBRARY или SAVEDPHOTOALBUM, чтобы получить существующие фотографии с вашего телефона. Подробнее на http://docs.phonegap.com/en/1.4.0/phonegap_camera_camera.md.html#Camera.

0 голосов
/ 02 апреля 2011

В телефонной щели:

$.post(URLReport,{   
   pic1: document.getElementById("image1").src.slice(23),
 }, function(xml) {  
     //stuff to do on success
 });   

На сервере:

if (isset($_POST['pic1'])) {
  $pic = base64_decode( $_POST['pic1']);
  if (strlen($pic) > 9 ) {
    $fh = fopen(yourfilename, 'w') or die("can't open file");
    fwrite($fh, $pic);
    fclose($fh);
  }
}

Легко peasy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...