本文へ移動
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
  • About
  • Price
  • Work
  • Blog
  • Contact
  1. ホーム
  2. Blog
  3. ファイル・画像をアップロードする最低限のサンプルコード(コピペ用テンプレ)

公開日: 2023.01.28

ファイル・画像をアップロードする最低限のサンプルコード(コピペ用テンプレ)

ファイル・画像をアップロードする最低限のサンプルコード(コピペ用テンプレ)

目次

  • はじめに
  • サンプルコード
  • アップロードページ
  • POSTされる側
  • まとめ

はじめに

フレームワークなどを使わない生のPHPで、写真などのファイルをサーバにアップロードするための最低限のコードを置いておきます。

ファイルアップロードの仕様は、作るものによって大きく変わります。そのため、余計なものをなるべく削ぎ落とした最低限のコードをベースに、必要なものを肉付けしていきたいと思ったりします。そういう時用です。

そのままコピペでファイルのアップロード機能が実装できます。

注意点

セキュリティやバリデーション、ユーザビリティなどはまったく考えられていません。

サンプルコード

アップロードページ

index.html

<!DOCTYPE html>
<html lang="ja">

<head>
    <title>ファイルアップロード</title>
</head>

<body>

    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="upload_file">
        <input type="submit" value="アップロード">
    </form>

</body>
</html>

補足

actionにはPOST先のPHPファイル名を入れます。

enctype=”multipart/form-data”はファイルをPOSTするのに必須な属性です。

<input>のnameは任意の名前です。upload.php側で受け取る時に使用します。

POSTされる側

upload.php

<?php
$saveDir = './';
$savePath = $saveDir . $_FILES['upload_file']['name'];

if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $savePath)) {
    // 成功時
} else {
    // 失敗時
}

// アップロードページに戻る
header('Location: ./index.html');
exit;

補足

$saveDirでアップロードされたファイルの保存先を指定しています。「./」だと直下に保存されます。フォルダに保存したい場合は「./data/」などとしてください(その場合は「data」フォルダをあらかじめ用意しておかないとエラーになります)

アップロードされたファイルは一時的に別の場所に保存されています。move_uploaded_file()関数で指定した場所に保存(移動)します。成功するとtrue、失敗するとfalseを返します。

$_FILES[‘upload_file’]の「upload_file」はアップロードフォームで指定した名前です。これにはいくつかの値が入っています。
・「name」元のファイル名
・「tmp_name」一時的に保存されたファイル名
・「type」ファイルのMIMEタイプ
・「size」ファイルのサイズ(単位はバイト)
・「error」アップロードに関する エラーコード
・「full_path」元ファイルのフルパス(PHP 8.1.0 以降で利用可能。正確でない場合あり)

まとめ

以上、ファイルをサーバにアップロードするための最低限のコードでした。

実際には、アップロードされたファイルのタイプやサイズでバリデーションが必要だったり、ファイル名もそのまま保存するのではなく、変更した方がセキュリティ的には良いかもしれませんね。

ぜひ、お好きなようにカスタマイズして使ってください。

タグ

  • テンプレ
  • ファイルアップロード

関連記事

2019.05.30

PHPでウェブスクレイピング

PHPでウェブスクレイピング

2023.01.24

ローカル環境でfile_get_contentsがタイムアウト

ローカル環境でfile_get_contentsがタイムアウト

2019.06.04

【PHP】includeしたプログラム等をすぐに出力させないでバッファリングしておく方法(ob_start)

【PHP】includeしたプログラム等をすぐに出力させないでバッファリングしておく方法(ob_start)
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
YAS プロフィール画像

長野県長野市在住
WEBエンジニア YAS

LINKS

  • X
  • Instagram
  • GitHub
Design
  • スタンダード
  • 和モダン
  • エンジニア
  • 信州ナチュラル
プライバシーポリシー

@ Webstudio YAS