2012-03-14 44 views
7

好吧,我有一个上传图片的小应用程序(使用phonegap,Jquery)。我有jQuery处理通过AJAX上传。图像正在发送,但我不知道如何正确处理它在外面。任何想法都非常欢迎!这里是我到目前为止的代码:PHP服务器从Phonegap和Jquery上传图片

PHP:

<?php 
    ////////THE PROBLEM AREA I THNK////////// 
    if ($_REQUEST['image']) { 

      // convert the image data from base64 
      $imgData = base64_decode($_REQUEST['image']); 

      // set the image paths 
      $file = '/uploaded_files/' . md5(date('Ymdgisu')) . '.jpg'; 
      $url = 'http://creativetree.co/creativetreeAlpha' . $file; 

      // delete the image if it already exists 
      if (file_exists($file)) { unlink($file); } 

      // write the imgData to the file 
      $fp = fopen($file, 'w'); 
      fwrite($fp, $imgData); 
      fclose($fp); 
    } 

    echo "<h1>Page is online</h1>"; 
    echo "<p>Nothing special just a first go at phonegap! </p>"; 
    echo "<h2>Contents of uploaded_files Folder to show iphone upload</h2>"; 

    $dir = '/homepages/22/d397139588/htdocs/creativetreeAlpha/uploaded_files'; 

    if ($handle = opendir($dir)) { 
     while (false !== ($file = readdir($handle))) { 
      if ($file != "." && $file != "..") { 
       echo "$file\n"; 
       echo "<br>"; 
      } 
     } 
     closedir($handle); 
    } 
    ?> 

基本HTML:

<script> 
function onBodyLoad() { 
document.addEventListener("deviceready",onDeviceReady,false); 
} 
</script> 
</head> 
<body onload="onBodyLoad()"> 
<body> 
     <h1>Upload an image</h1> 

     <div id="upload"  
     <input type="button" class="send-image" value="camera" /> 
     <input type="button" class="send-image" value="library" /> 
     <img style="width:60px; height:60px" id="image" src="" /> 
     </div> 

<div id="output"></div> 
</body> 
</html> 

的Javascript:

$(document).ready(function(){ 
    $(document).bind('deviceready', function(){ 

    function sendImage(src) { 

    src = (src == 'library') ? Camera.PictureSourceType.PHOTOLIBRARY : Camera.PictureSourceType.CAMERA; 
    navigator.camera.getPicture(success, fail, {quality: 45, sourceType: src}); 

          function success(imageData) { 
          var url = 'http://creativetree.co/creativetreeAlpha/mobileImageUpload.php'; 
          var params = {image: imageData}; 

          // send the data 
          $.post(url, params, function(data) { 
            alert('sent'); 
            // Display the selected image on send complete 
            $('#image').attr('src', 'data:image/jpeg;base64,' + params['image']);  
          }); 
          } 
} 

    function fail(message) { alert(message); } 

    $('.send-image').click(function() { sendImage($(this).val()); }); 

    }); 
}); 

回答

0

长话短说我需要在我的在线服务器文件夹上设置权限。

同样值得注意的是任何使用phonegap和访问URL的新开发者(显然对于AJAX都很重要)。 URL必须在Xcode项目中设置(PhoneGap.plist包含一个数组来存储外部URL)。

这对一些人来说可能是显而易见的,但即使通过PhoneGap(或者至少我没有看到我的疯狂谷歌搜索)似乎没有很好的记录。我学习的wiki教程没有提到这件事。

查看图片了解详情。

enter image description here

1

在您使用创建图像目录检查写权限FWRITE。