2013-02-27 2 views
2

Я пытаюсь настроить приложение через PhoneGap (Cordova), чтобы делать снимки и загружать их на наш сервер. Я проделал так много ответов здесь и попробовал код в них. Я могу взять камеру и сделать снимок, я могу получить доступ к телефонной галерее. Но я не могу заставить его отправить изображение на сервер. Я попытался отправить изображение и даже отправил поток изображений base64. Я не могу получить его на сервере.Захват изображения/загрузка с помощью Phonegap для iPhone не работает

Вот Javascript на стороне клиента:

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 

} 

function ImageUpload() { 
    this.useExistingPhoto = function(e) { 
     this.capture(Camera.PictureSourceType.SAVEDPHOTOALBUM); 
    } 

    this.takePhoto = function(e) { 
     this.capture(Camera.PictureSourceType.CAMERA); 
    } 

    this.capture = function(sourceType) { 
     navigator.camera.getPicture(this.onCaptureSuccess, this.onCaptureFaile, { 
      destinationType: Camera.DestinationType.FILE_URI, 
      soureType: sourceType, 
      correctOrientation: true 
     }); 
    } 

    this.onCaptureSuccess = function(imageURI) { 
     var fail, ft, options, params, win; 

     success = function(response) { 
      alert("Your photo has been uploaded!"); 
     }; 

     fail = function(error) { 
      alert("An error has occurred: Code = " + error.code + "\nMessage = "+error.message); 
     }; 

     options = new FailUploadOptions(); 
     options.fileKey = "file"; 
     options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1); 
     options.mimeType = "text/plain"; 
     params = { 
      val1: "some value", 
      val2: "some other value" 
     }; 
     options.params = params; 
     ft= new FileTransfer(); 
     ft.upload(imageURI, 'http://style.appdev01.com/app/client-profile.php', success, faile, options); 
    } 

    this.OnCaptureFail = function(message) { 
     alert("Failed because: "+message); 
    } 
}; 
var imageuploader = new ImageUpload(); 

Две кнопки вызывают imageuploader.takePhoto и .useExistingPhoto по щелчку.

На стороне сервера у меня есть это PHP: если (Исеть ($ _ FILES [ 'файл'])) {

$target_path = "/home/style/public_html/images/client_images/app_image.jpg"; 

move_uploaded_file($_FILES['file']['tmp_name'], $target_path); 

$insert = "INSERT INTO 
    `fut` 
SET 
    `request` = '".serialize($_POST)."', 
    `file` = '".serialize($_FILES)."'"; 
$mysql->query($insert); 

}

Это только для хранения POST и FILE массивы к db, чтобы убедиться, что они прошли и создали изображение.

Но опять же ничего не доходит до сервера. Любая помощь была бы высоко оценена. Я пробовал так много версий этого кода из многих вопросов здесь и по всему Интернету.

ответ

0
define ('SITE_ROOT', realpath(dirname(__FILE__))); /* echo SITE_ROOT; to dir 
move_uploaded_file($_FILES["file"]["tmp_name"],SITE_ROOT."/uploads/".$_FILES["file"]["name"]); // will move file, make sure uplaods has write permission! 

Это работает для меня на Android Simulator, а не на Tablet, но дайте мне знать, если у вас есть он работает, занят на одно и то же.

$myarray = array($_REQUEST); 
foreach ($myarray as $key => $value) { 

    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 
} 

Что вы можете использовать, чтобы проверить POST/GET!

0

Попробуйте это мой код. Это сработало для меня.

  1. закодировать URL методом encodeURI
  2. fileKey с "файл", как и в серверной стороне скрипт $ _FILES [ 'файл']

    uploadFile: function(refNo){ 
    var uri = fileUpload.fileUri; 
    var file = uri.substr(uri.lastIndexOf('/') + 1); 
    
    var options = new FileUploadOptions(); 
    options.fileKey = "file"; 
    options.fileName = file; 
    options.mimeType="image/jpeg"; 
    alert("name === "+uri); 
    options.chunkedMode = false; 
    
    
    var ft = new FileTransfer(); 
    Common.ajaxLoading('show'); 
    
    
    ft.upload(uri,encodeURI("http://172.16.1.147:80/upload/home.php") , fileUpload.uploadSuccess, fileUpload.uploadFail, options, true); 
    }, 
    
Смежные вопросы