.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
動画ファイルをCMS化して保存するときに、多くの場合はファイルパスをデータベース(MySQL)に保存しているが、バイナリデータに変換してMySQLに保存する方法をメモ。
データベースの使用量は増えますが、動画ファイルに直接アクセスできなくなるので、右クリック等の不正ダウンロードは防げそうです。
動画データを保存するための、テーブルを作成。
この時、該当するカラムを「バイナリデータを扱える形式」で作成。
BLOB型はバイナリデータを扱うデータ型。
画像、動画、PDFファイルなどを保存する際はこちらの型式を使用。
今回は「LONGBLOB」を使用しました。
型式 | 最大長 |
TINYBLOB | 255バイト |
BLOB(M) | 65,535バイト |
MEDIUMBLOB | 16,777,215バイト |
LONGBLOB | 4,294,967,295バイト |
//データベースへの接続
//MySOLホスト名
$host = '○○○○';
//データベース名
$dbname = '○○○○';
//データベースユーザー名
$username = '○○○○';
//データベースパスワード
$pssword = '○○○○';
//文字コード設定
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'");
// MySQLへの接続
$db = new PDO('mysql:host='.$host.'; dbname='.$dbname.'', $username, $pssword, $options);
//フォームの入力値を取得
if ($_FILES['upfile']['name'] !== ''){
//ここにバリデーションチェックが入る(省略)
//バイナリデータ変換処理
$raw_data = file_get_contents($_FILES['upfile']['tmp_name']);
//データベースへの保存処理
$addsql = $db->prepare('INSERT INTO 動画を保存するテーブル名 (動画を保存するカラム名) VALUES(:movie)');
$addsql->bindParam(':movie', $raw_data, PDO::PARAM_STR);
$addsql->execute();
}
<form action="input_movie.php" method="post" enctype="multipart/form-data">
<dl>
<dt>動画ファイル</dt>
<dd><input type="file" name="upfile"></dd>
</dl>
<form>
バイナリデータで保存されたデータはそのままの状態では動画ファイルとして呼び出せません。
動画を再生させるためにはバイナリデータを再変換して表示します。
$id = preg_replace('/[^0-9]/', '', $_GET['id']);
$get_value_sql = $db->prepare('SELECT 動画を保存するカラム名 FROM 動画を保存するテーブル名 WHERE id = :id');
$get_value_sql->bindValue(':id', $id, PDO::PARAM_INT);
$get_value_sql->execute();
while($row = $get_value_sql->fetch(PDO::FETCH_ASSOC)){
//今回は出力を「MP4形式」に限定しています。
header('Content-Type: video/mp4');
echo($row['動画を保存するカラム名']);
}
<figure>
<video width="100%" preload="none" onclick="this.play();" controls="" controlslist="nodownload">
<source src="create_movie.php?id=対象動画のID">
</video>
</figure>
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…
2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…
2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…
2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…
2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…