LoginSignup
0
1

More than 1 year has passed since last update.

【PHP】herokuで画像を保存

Last updated at Posted at 2022-05-05

herokuでは画像が生成されません。
そのため、パスを保存して画像を表示するという方法が通用しません。

なので、DBに画像のパスを保存するのではなく、
画像のバイナリデータを保存する方法を採用します。

index.html
<form method="post" action="../test.php" enctype="multipart/form-data">
  <input type="file" name="image_name" accept="image/*" multiple>
  <input type="submit" value="編集完了">
</form>

画像ファイルを選択して、編集完了ボタンを押すとtest.phpに遷移します。

test.php
<?php
$image = base64_encode(file_get_contents($_FILES['image_name']['tmp_name']));

    $dbh = db_connect();
    $sql = "UPDATE user
            SET image = :image
            WHERE id = :user_id";
    $stmt = $dbh->prepare($sql);
    $stmt->execute(array(
      ':image' => $image,
      ':user_id' => $_SESSION['user_id'];
    ));
    reload();
?>

base64_encodeで画像パスをエンコードした値をDBに保存しています。

index.php
<img class="mypage" src="data:image/jpeg;base64,<?= $current_user["image"]; ?>">

src属性にdata:image/png;base64,を指定して、DBからバイナリデータを取得すれば画像が表示されます。

参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1