Я пытаюсь сохранить изображения, взятые из Android Studio (из галереи пользователя), и записать закодированное в base64 изображение в строку, используя php, для хранения на веб-сервере.
Я смотрел на многочисленные учебники, которые по-разному влияют на это. Я решил следовать за тем, что было сделано с функцией fopen (), но она продолжала выдавать мне ошибку «файл или каталог не найден».
После этого я попытался написать полный путь к каталогу изображений, в котором я буду сохранять изображения. Ошибка изменилась на сообщение об ошибке, которое я определил в части кода «else», а именно:
{"error": true, "error_msg": "Произошла неизвестная ошибка при создании предложения. Повторите попытку."}
Вот полный код:
class create_offer_form {
private $conn;
// constructor
function __construct() {
require_once 'android_login_connect.php';
// connecting to database
$db = new android_login_connect();
$this->conn = $db->connect();
}
public function StoreOfferInfo($offerMname, $offerUname, $offerTitle, $offerText, $offerBranch, $offerDateTime, $offerMinPrice, $offerMaxPrice, $offerCategory, $offerImageURL) {
$image_name = time()."_".rand().".jpeg" ;
$decoded_string = base64_decode($offerImageURL);
$path = 'AndroidUploadedImages/'.$image_name;
$file = fopen($path, 'wb');
$is_written = fwrite($file, $decoded_string);
fclose($file);
if($is_written > 0) {
$stmt = $this->conn->prepare("INSERT INTO Image(Image) VALUES(?)");
$stmt->bind_param("s", $path);
$result = $stmt->execute();
$stmt->close();
if($result){
echo "success";
}else{
echo "failed";
}
}
$stmt = $this->conn->prepare("INSERT INTO Offer(Offer_title, Offer_memberName, Offer_branch, Offer_text, Offer_image, Offer_DateTime, Offer_minPrice, Offer_maxPrice, Offer_category, Offer_Username) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssssssss", $offerTitle, $offerMname, $offerBranch, $offerText, $offerImageURL, $offerDateTime, $offerMinPrice, $offerMaxPrice, $offerCategory, $offerUname);
$result = $stmt->execute();
$stmt->close();
// check for successful store
if ($result) {
$stmt = $this->conn->prepare("SELECT Offer_title, Offer_memberName, Offer_branch, Offer_text, Offer_image, Offer_DateTime, Offer_minPrice, Offer_maxPrice, Offer_category, Offer_Username FROM Offer WHERE Offer_title = ?");
$stmt->bind_param("s", $offerTitle);
$stmt->execute();
$stmt-> bind_result($token1, $token2,$token3,$token4,$token5,$token6, $token7, $token8, $token9, $token10);
while ( $stmt-> fetch() ) {
$offer["offerMname"] = $offerMname;
$offer["offerUname"] = $offerUname;
$offer["offerTitle"] = $offerTitle;
$offer["offerText"] = $offerText;
$offer["offerBranch"] = $offerBranch;
$offer["offerDateTime"] = $offerDateTime;
$offer["offerMinPrice"] = $offerMinPrice;
$offer["offerMaxPrice"] = $offerMaxPrice;
$offer["offerCategory"] = $offerCategory;
$offer["offerImageURL"] = $offerImageURL;
}
$stmt->close();
return $offer;
} else {
return false;
}
}
Это LOC, первый сообщенный об ошибке при ошибке:
$file = fopen($path, 'wb');
$is_written = fwrite($file, $decoded_string);
fclose($file);
Изображение в Android Studio прекрасно отображается в ImageView, и оно также успешно закодировано в base64. Я знаю, что ошибка от php, потому что я пытался отправить запрос с помощью Postman, и эти ошибки выскакивали.
Заранее спасибо!