POSTされたデータをファイルに保存する

PHPでマルチパートPOSTを取り扱う

Raspberry Piで作成中の監視カメラシステムから定期的に撮影画像がHTTP POSTするようにしました。そのアップロードされた画像データを受信してサーバ上にファイルとして保存するのが、今回のPHPの仕事です。

<?php
// 監視カメラ画像アップロード
if ($_FILES['file']) {
    date_default_timezone_set('Asia/Tokyo');
    $dirname  = date("Ymd");
    $dirpath  = "/home/username/www/" . $dirname . "/";
    @mkdir($dirname);
    $filename = date("His") . '.jpg';
    move_uploaded_file($_FILES['file']['tmp_name'], $dirpath. $filename);
    // 最新ファイルのパスを登録
    $fp = fopen("/home/username/www/now_image.txt", "w");
    fwrite($fp, $dirname . "/" . $filename);
    fclose($fp);
}

特に珍しいところはありません。日付毎にディレクトリを作成して、時間を付けたファイル名で保存していきます。ディレクトリをつくるのはファイルが大量に散乱するのを防ぐためです。また、将来的にバックアップ、自動削除などの拡張がやりやすいという利点もあります。

表示プログラム側に最新の画像ファイルを通知する必要があるため、「now_image.txt」というファイルに最新の画像ファイルのパスを保存していますが、特に必要が無ければ削除して構いません。

このスクリプトをインターネット上で公開するサーバで使用する場合は、適切なチェック処理を追加してください。

Apache

Posted by @erestage