ファイルのアップロードとダウンロードは、Web開発における非常に一般的で重要な機能です。ユーザーが写真、ドキュメント、またはサーバーからファイルをダウンロードする必要があるかどうかにかかわらず、バックエンドコードが重要な役割を果たします。この記事では、PHPを使用してファイルのアップロードとダウンロードを完了し、参照用の実用的なコード例を提供する方法について詳しく説明します。
ファイルアップロードは、ローカルファイルをサーバーに転送するプロセスです。 PHPには、開発者がアップロード機能を実装できるようにするために、豊富な機能と変数が組み込まれています。
まず、フロントエンドにファイルアップロードフォームを作成して、ユーザーがファイルを選択できるようにする必要があります。
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="アップロード">
</form>
upload.phpでは、 $ _files HyperGlobal変数を使用してファイル情報をアップロードし、ファイルを一時ディレクトリから指定された場所に移動します。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$file = $_FILES['file'];
<p>// ファイル名を取得します<br>
$filename = $file['name'];</p>
<p>// 一時的なパスを取得します<br>
$tmp_path = $file['tmp_name'];</p>
<p>// 保存パスを指定します<br>
$save_path = 'uploads/' . $filename;</p>
<p>// ファイルをターゲットディレクトリに移動します<br>
move_uploaded_file($tmp_path, $save_path);</p>
<p>echo '文件アップロード成功!';<br>
}<br>
?><br>
ファイルを保存するためのディレクトリがサーバーにあることを確認してください。そうしないと、アップロード操作が失敗します。次のコードでディレクトリを確認して作成できます。
<?php
if (!file_exists('uploads')) {
mkdir('uploads', 0777, true);
}
?>
ファイルのダウンロードとは、サーバー上のファイルをユーザーのローカルエリアに転送することを指します。 PHPは、HTTPヘッダーを設定してファイルを安全にダウンロードできるようにします。
download.phpでは、ファイルパスを指定し、ファイルが存在するかどうかを決定し、応答ヘッダーを設定してファイルコンテンツを出力します。
<?php
$file_path = 'files/document.pdf';
<p>if (file_exists($file_path)) {<br>
header('Content-Description: File Transfer');<br>
header('Content-Type: application/octet-stream');<br>
header('Content-Disposition: attachment; filename=' . basename($file_path));<br>
header('Content-Length: ' . filesize($file_path));<br>
header('Pragma: public');<br>
header('Expires: 0');</p>
<p>readfile($file_path);<br>
exit;<br>
} else {<br>
die('ファイルは存在しません!');<br>
}<br>
?><br>
指定されたダウンロードファイルがサーバーの対応するディレクトリに存在することを確認してください。そうしないと、ユーザーはそれを正常にダウンロードできません。
この記事では、PHPバックエンドのファイルアップロードとダウンロードを実装する重要な手順を体系的に紹介します。 $ _filesを介してファイル情報をアップロードし、 Move_uploaded_fileを使用してファイルを保存し、HTTP応答ヘッダーを設定してファイルのダウンロードを達成します。サンプルコードはシンプルで理解しやすく、初心者が参照して適用するのに適しています。開発者は、実際のニーズに応じて機能をさらに改善し、プロジェクトのユーザーエクスペリエンスを改善できます。