Не удается вставить изображение в базу данных SQL Server с Android с помощью переполнения стека

Уже много дней я пытаюсь вставить данные сканирования биометрических отпечатков пальцев в базу данных MS SQL Server с помощью Android через PHP.

На этот раз я делюсь всем своим кодом, так или иначе, я должен его завершить.
Пожалуйста, друзья, помогите мне решить эту проблему.

Android-код для вызова Api:

 public void registerFinger(Bitmap scannedImage) {

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
scannedImage.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] fingerByte = byteArrayOutputStream.toByteArray();
String encodedFingerData = Base64.encodeToString(fingerByte, Base64.DEFAULT);

try {

h = new JSONObject();
h.put("FingerPrint", encodedFingerData);

} catch (Exception e) {
e.printStackTrace();
}

Call<UniversalPojo> call = apiInterfaces.registerFingerPrint(String.valueOf(empId), getRequestBody(h.toString()));

call.enqueue(new Callback<UniversalPojo>() {
@Override
public void onResponse(Call<UniversalPojo> call, Response<UniversalPojo> response) {

if (response.isSuccessful()) {

if (response.body().getStatus().equalsIgnoreCase("true")) {

showDialog("Registration Done.");

} else {


showDialog("Registration Failed.");

}

} else {


showDialog("Registration Failed.");

}

}

@Override
public void onFailure(Call<UniversalPojo> call, Throwable t) {

t.printStackTrace();
showDialog("Registration Failed.");
}
});

}

public RequestBody getRequestBody(String rawString) {

return RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), rawString.toString());

}

RegisterFingerData.php

<?php

require_once 'db_functions.php';
$db = new db_functions();

$data = json_decode(file_get_contents('php://input'), true);

$FingerPrint = $data['FingerPrint'];

//decoding and converting the image into byte array
$a = base64_decode($FingerData);
$b = array();
foreach (str_split($a) as $c) {
$b[] = sprintf("%08b", ord($c));

}

$ifAlreadyExists = $db->registerFinger( $b );

?>

Колонка FingerData в EMPFINGERMASTER из VARBINARY (МАКС) тип данных.

функция registerFinger

 public function registerFinger($fingerPrint)
{

try {

$sqlString = "INSERT INTO EMPFINGERMASTER( FingerData ) values (?)";
$stmt   = $this->conn->prepare($sqlString);
$params = array($fingerPrint);
$stmt->execute($params);
$row = $stmt->fetch();

if (!$stmt) {

$arr = $stmt->errorInfo();
print_r($arr);

}

if ($rows) {
echo true;
} else {
echo false;
}

} catch (Exception $e) {
echo 'Message: ' . $e->getMessage();
}

}

Функция GetFingerPrintData ()

 public function GetFingerPrintData($myId){

$sqlString = "SELECT FingerData from EMPFINGERMASTER WHERE MyId = 1";
$stmt      = $this->conn->prepare($sqlString);
$params    = array($myId);
$stmt->execute($params);
$row = $stmt->fetch();

if (!$stmt) {

$arr = $stmt->errorInfo();
print_r($arr);

}

if ($row) {

//reconverting the byte[] array to BASE64 String
$rawResult = $row['FingerData'];
$resim     = substr($rawResult, 2);
$bin       = hex2bin($rawResult);

$base64_image = base64_encode($bin);
echo $base64_image;

}

}

Данные, хранящиеся в базе данных, выглядят примерно так:
[B @ 623a5f2

но если я проверяю в echo, он показывает большие данные, прежде чем преобразовать их в byte [] в RegisterFingerData.php

И я не смогу получить правильные данные во время поиска.

У меня вопрос, я хочу сохранить данные в БД и получить их для проверки.
Есть много предложений по другим подобным вопросам, но после их использования я достиг окончательного кода и все еще не смог получить результаты.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]