410.coffee

まじめにふざける。

【入門】PHPでファイルアップロードサービスを作る。|サンプルコードあり

今回は、画像アップロードサービスをメインにやっていきます。

画像をアップロードしたらurlが返ってくるというものです。

それではやっていきましょう。

動作環境を整える

こちらはサーバー必須となっています。

サーバーを立てるか、借りるかして確保してください。

Indexの作成

今回はphpで作成するので、

index.php

を作成し、以下を貼り付けてください。

<!DOCTYPE html>
<html lang="ja" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>uploader</title>
  </head>
  <?php
   ?>
  <body>

  </body>
</html>

ファイルを選択できるようにしたい

postのfrom作ります。

<form action="index.php" method="post" enctype="multipart/form-data">
  <input type="file" name="up" accept="image/*">
  <input type="submit" name="sb">
</form>

これでおそらく画像が選択できるようになったと思います。

次にこれを受け取る処理を書きます。

ファイルをサーバーにアップロードする

とりあえず日時を取得します。

if (isset($_POST['sb'])) {
  $date = date("Ymdwhms");
}

ファイルの名前はその時の日時で行きたいと思います。

これはsubmitが押されたら日時を取得するというものです。

サーバーに何かをアップロードするときは、

move_uploaded_file()

を使います。

これをこう記述するとサーバーにpngがあると思います。

if(!empty($_FILES)){
   $uploaded_path = './'.$date.'.png';
   $result = move_uploaded_file($_FILES['up']['tmp_name'],$uploaded_path);
}

画像が選択されていたら、ファイル名を日時にして端子をpngにするというものです。

これだと強制的にpngになってしまうのであまりよくありませんが今回は割愛します。

URLを付与したい

アップロードした画像は今どこにいるのでしょうか。

○○○.com/ここ

ですよね。

つまり、自分のウェブサイトのドメインの後に日時.pngをくっつけてやります。

if(!empty($_FILES)){
  $uploaded_path = './'.$date.'.png';
  $result = move_uploaded_file($_FILES['up']['tmp_name'],$uploaded_path);
  echo "https://○○○.com/".$date.".png";
}

○○○.comのところはご自身のドメインに変えてください。

これで画像をアップロードすると、URLがもらえたと思います。

最後に

今回は以上となります。

結構短くできました。

注意点

サーバーによっては、このようにアップロードするのを禁じている場合があります。
ご確認下さい。

個人情報やポルノなどアップロードされると最悪罰せられます。
今回のソースコードはあくまで練習としてお使いください。

サンプルコード

<!DOCTYPE html>
<html lang="ja" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>uploader</title>
  </head>
  <?php
    if (isset($_POST['sb'])) {
      $date = date("Ymdwhms");
    }
    if(!empty($_FILES)){
      $uploaded_path = './'.$date.'.png';
      $result = move_uploaded_file($_FILES['up']['tmp_name'],$uploaded_path);
      echo "https://○○○.com/".$date.".png";
    }
   ?>
  <body>
    <form action="index.php" method="post" enctype="multipart/form-data">
      <input type="file" name="up" accept="image/*">
      <input type="submit" name="sb">
    </form>
  </body>
</html>