Загрузка изображения с Android на сервер с помощью PHP - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь сохранить изображения, взятые из 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, и эти ошибки выскакивали.

Заранее спасибо!

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