PHP は、一般的に使用されるサーバーサイド プログラミング言語であり、Web 開発によく使用されます。その利点は、学習と使用が簡単で、商用およびオープン ソース プロジェクトで広く使用されていることです。開発プロセスでは、ファイルを Web サーバーにアップロードするための簡単かつ効果的な方法を提供するため、ファイルのアップロードは必須です。ただし、ユーザーがアップロードしたファイルを Web ページに直接表示せず、表示する前にバックグラウンドで処理する必要がある場合があります。
今回はPHPを使ってアップロードせずにプレビューする機能を実装する方法を紹介します。始める前に、PHP の基本を理解していることを確認してください。
ステップ 1: HTML フォームを作成する
まず、ユーザーがファイルをアップロードできるように、HTML ページにファイル アップロード フォームを作成する必要があります。フォームには、標準のファイル タイプの入力要素と送信ボタンを追加する必要があります。コードは次のとおりです:
<html> <head> <title>文件上传示例</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <br> <input type="submit" value="上传"> </form> </body> </html>
ステップ 2: ファイルのアップロードと処理
ユーザーがクリックしたとき送信ボタンを押すと、フォームのデータがサーバー上のupload.phpファイルに送信されます。このファイルでファイルのアップロードと処理のタスクを完了する必要があります。
まず、アップロードされたファイルが存在するかどうかを確認し、アップロード プロセス中にエラーが発生したかどうかを判断する必要があります。この機能を実現するには、PHP 組み込み関数 is_uploaded_file()
と move_uploaded_file()
を使用できます。コードは次のとおりです。
<?php if (isset($_FILES["file"]) && !empty($_FILES["file"]["name"])) { $file = $_FILES["file"]; // 检查上传的文件是否是有效的文件 if (!is_uploaded_file($file["tmp_name"])) { die("上传文件无效"); } // 将上传的文件从临时目录移动到我们指定的目录 if (!move_uploaded_file($file["tmp_name"], "./upload/" . $file["name"])) { die("无法移动文件"); } // 在这里对上传的文件进行处理,例如调用ImageMagick库对图片进行处理 // ...... } else { die("请选择要上传的文件"); } ?>
この例では、まずアップロードされたファイルが有効かどうかを確認します。ファイルが不正な場合は、「アップロードされたファイルが不正です」と出力してプログラムを終了します。ファイルが有効な場合は、指定したディレクトリに移動されます。移動中にエラーが発生した場合は、「ファイルを移動できません」と出力され、プログラムが終了します。最後に、このスクリプトの他の部分では、アップロードされたファイルを使用して何かを行うことができます。
ステップ 3: プレビューに直接戻らないでください
上記のコードでは、ファイルをアップロードして処理しました。ただし、私たちの目標はプレビューを直接返すことではありません。この目標を達成するには、アップロードされたファイルの URL をデータベースに保存し、同時にキーを生成する必要があります。次に、このキーをユーザーに渡し、今後ファイルを表示するためにこのキーを使用するように指示できます。
「files」という名前のデータベースがあり、「url」という名前の列と「key」という名前の列が含まれているとします。次のコードを使用して、アップロードされたファイルの URL と生成されたキーをデータベースに保存できます。
<?php // 建立数据库连接 $host = "localhost"; $username = "root"; $password = ""; $database = "files"; $conn = mysqli_connect($host, $username, $password, $database); // 检查连接 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } if (isset($_FILES["file"]) && !empty($_FILES["file"]["name"])) { $file = $_FILES["file"]; // 检查上传的文件是否是有效的文件 if (!is_uploaded_file($file["tmp_name"])) { die("上传文件无效"); } // 将上传的文件从临时目录移动到我们指定的目录 if (!move_uploaded_file($file["tmp_name"], "./upload/" . $file["name"])) { die("无法移动文件"); } // 在这里对上传的文件进行处理,例如调用ImageMagick库对图片进行处理 // ...... // 将上传文件的URL和生成的密钥存储到数据库中 $url = "http://www.example.com/upload/" . $file["name"]; $key = md5($url . time()); $sql = "INSERT INTO files (url, `key`) VALUES ('$url', '$key')"; if (mysqli_query($conn, $sql)) { echo "上传成功,密钥是 $key"; } else { echo "上传失败,请重试"; } } else { die("请选择要上传的文件"); } // 关闭数据库连接 mysqli_close($conn); ?>
上記のコードでは、MySQLi ライブラリを使用してデータベースに接続しました。ファイルをアップロードする前にまず接続を確立し、ファイルをアップロードした後に接続を閉じます。次に、アップロードされたファイルの URL と生成されたキーをデータベースに保存し、後でキーに基づいてファイルを検索できるようにします。
ステップ 4: ファイルを表示する
ファイルをアップロードしてデータベースに保存したので、キーに基づいてファイルを検索して表示できます。 「key」クエリ文字列パラメータを含む URL を作成し、それを HTML ページ内のリンクまたはボタンにリンクするだけです。ユーザーがリンクまたはボタンをクリックすると、システムはそのキーを使用してデータベースからファイルを検索し、新しいページに表示します。
以下は簡単なサンプル コードです:
<?php // 建立数据库连接 $host = "localhost"; $username = "root"; $password = ""; $database = "files"; $conn = mysqli_connect($host, $username, $password, $database); // 检查连接 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } if (isset($_GET["key"]) && !empty($_GET["key"])) { $key = $_GET["key"]; // 从数据库中查找URL $sql = "SELECT url FROM files WHERE `key`='$key' LIMIT 1"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { // 找到URL $row = mysqli_fetch_assoc($result); $url = $row["url"]; echo '<img src="' . $url . '">'; } else { // 找不到URL die("文件不存在"); } } else { die("无效的密钥"); } // 关闭数据库连接 mysqli_close($conn); ?>
上記のコードでは、最初にデータベース接続を確立します。次に、クエリ文字列の「key」パラメータを確認し、それを使用してデータベースから URL を検索します。見つかった場合は、ファイルが表示されます。それ以外の場合、キーが無効な場合は、エラー メッセージが出力されます。
結論
この記事では、PHPを使用してアップロードせずにプレビューする機能を実装する方法を紹介しました。アップロードされたファイルの URL をデータベースに保存し、そのキーを生成できます。次に、そのキーをユーザーに渡し、今後ファイルを表示するときにそのキーを使用するように指示できます。この方法を使用すると、Web サイト上のファイルをより詳細に制御し、特定の条件下でのみファイルを表示できるようにすることができます。
以上がPHPを使用してアップロードせずにプレビューする機能を実装する方法の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。