2014-11-23 3 views
0

Я пытаюсь закодировать файл .jpg на моем сервере и отправить строку обратно в свое приложение для Android. Функция кодирования PHP, похоже, не работает - я всегда получаю нулевой ответ.PHP кодирование изображений не работает

... 

} else if ($tag == 'getPhoto') { 
    $filePath = $_POST['filePath']; 
    $filePath = mysql_real_escape_string($filePath); 
    $photo_str = $db->getPhotoString($filePath); 
    $photo_str = mysql_real_escape_string($photo_str); 
    if (!empty($photo_str)) { 
     echo $photo_str; 
    } else { 
     echo 'Something went wrong while retrieving the photo.'; 
    } 
} 

... 

public function getPhotoString($filePath) { 
    $type = pathinfo($filePath, PATHINFO_EXTENSION); 
    $photoData = file_get_contents($filePath); 
    $photo_str = 'data:image/' . $type . ';base64,' . base64_encode($photoData); 
    // $photo_str = 'test_response'; 
    return $photo_str; 
} 

Я знаю, что мой путь_к_файлу правильно, потому что, когда я могу изменить его я получаю сообщение об ошибке: файл/каталог не существует. И «test_response» работает, когда я раскомментирую его. Пожалуйста помоги!

UPDATE - отношение андроида код:

HttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(url); 
httpPost.setEntity(new UrlEncodedFormEntity(parameters));  
HttpResponse response = httpClient.execute(httpPost); 
photoString = convertResponseToString(response); 
Log.d("string response", photoString); 

public String convertResponseToString(HttpResponse response) throws IllegalStateException, IOException{   
    String res = ""; 
    StringBuffer buffer = new StringBuffer(); 
    is = response.getEntity().getContent(); 
    int contentLength = (int) response.getEntity().getContentLength(); //getting content length…..     
    if (contentLength < 0) { 
    } else { 
      byte[] data = new byte[512]; 
      int len = 0; 
      try { 
       while (-1 != (len = is.read(data))) { 
        buffer.append(new String(data, 0, len)); //converting to string and appending to stringbuffer….. 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      try { 
       is.close(); // closing the stream….. 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      res = buffer.toString();  // converting stringbuffer to string….. 
    } 
    //System.out.println("Response => " + EntityUtils.toString(response.getEntity())); 
    return res; 
} 
+0

'Я всегда получаю нулевой ответ. '. От кого? Где? – greenapps

+0

Когда я эхо $ photo_str, он появляется как null, когда я тост его в моем приложении. – wildebeest

+0

Вы эхом отзывались на '$ filePath'? Правильно ли это? – greenapps

ответ

0

Это не ответ, только предложение, но я не в состоянии прокомментировать, как я не хватает репутации XD. Во всяком случае, вы пытались повторить $photoData после

$photoData = file_get_contents($filePath); 

, чтобы увидеть, если она наполнена чем-то? Может быть, вы получите нулевой результат. Кроме того, можете ли вы рассказать мне, что такое значение $ filePath, когда оно берется из переменной $ _POST и когда передано в функцию getPhotoString($filePath)? Я думаю о чем-то неправильном с mysql_real_escape_string().

+0

Я внес изменения, которые вы предложили и добавил: if ($ photoData === FALSE) { \t \t \t return 'Error'; \t \t} ... он по-прежнему возвращает пустую строку. Я также удалил mysql_real_escape_string(). – wildebeest

+0

У вас есть правильное разрешение на папку, где изображение jpg находится на сервере? – Fumarja

+0

Я ноб, поэтому не знаю, как это изменить. Можешь сказать мне??:) – wildebeest

Смежные вопросы