Загрузить фото с iPhone на PHP с помощью PhoneGap

У меня есть простая форма загрузки, работающая на 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? Любой исходный код по обе стороны от этого был бы высоко оценен.

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

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

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

посетите http://docs.phonegap.com/phonegap_camera_camera.md.html для получения дополнительной информации

В телефоне:

 $.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); } } 

Очень просто.