Я пытаюсь закодировать файл .jpg на моем сервере и отправить строку обратно в мое приложение для Android. Функция кодирования 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» работает, когда я раскомментирую его. Пожалуйста помоги!
ОБНОВЛЕНИЕ — соответствующий код Android:
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;
}
Это не ответ, а только предложение, но я не могу комментировать, так как мне не хватает репутации xD. Во всяком случае, вы пытались эхо $photoData
после
$photoData = file_get_contents($filePath);
чтобы увидеть, заполнен ли он чем-то? Может быть, вы получите нулевой результат. Кроме того, вы можете сказать мне, что значение $ filePath, когда берется из переменной $ _POST и когда передается в getPhotoString($filePath)
функционировать? Я думаю о чем-то не так с mysql_real_escape_string ().
Других решений пока нет …