Tôi đã quản lý để có được chức năng ban đầu để xuất ra dòng Base64 bằng cách truyền như vậy:
$stmt = $this->con->prepare("SELECT owner, pet_name, last_seen, contact, description, CAST(photo as CHAR(1000000) CHARACTER SET utf8) as photo, location FROM Pets");
Mặc dù điều này cho phép nhận chuỗi Base64, nó vẫn bao gồm các ký tự không mong muốn. Các ký tự không mong muốn do JSON_ENCODE gây ra. Dưới đây là những gì tôi đã sử dụng để sửa nó.
Về cơ bản, 1. xóa các ký tự đã thêm và 2. yêu cầu JSON_ENCODE không in các ký tự thoát với JSON_UNESCAPED_SLASHES.
Đối với hàm getReports ()
function getReports() {
$stmt = $this->con->prepare("SELECT owner, pet_name, last_seen, contact, description, CAST(photo as CHAR(1000000) CHARACTER SET utf8) as photo, location FROM Pets");
$stmt->execute();
$stmt->bind_result($owner, $pet_name, $last_seen, $contact, $description, $photo, $location);
$reports = array();
while($stmt->fetch()) {
$report = array();
$report['owner'] = $owner;
$report['pet_name'] = $pet_name;
$report['last_seen'] = $last_seen;
$report['contact'] = $contact;
$report['description'] = $description;
$photo = str_replace("\n","",$photo);
$photo = str_replace("\\/","/", $photo);
$photo = stripcslashes($photo);
$report['photo'] = $photo;
$report['location'] = $location;
array_push($reports, $report);
}
return $reports;
}
Và trong tập lệnh Api, đã thay đổi kết quả trả về từ
echo json_encode($resultArray);
đến
echo json_encode($resultArray, JSON_UNESCAPED_SLASHES);
Bây giờ mọi thứ hoạt động tuyệt vời. Đây có phải là phương pháp hay nhất không? Tôi không chắc. Tôi chắc chắn lưu trữ base64 có lẽ không ...