ホームページ  >  記事  >  バックエンド開発  >  PHP 入門: ファイルのアップロードとダウンロード

PHP 入門: ファイルのアップロードとダウンロード

WBOY
WBOYオリジナル
2023-05-22 10:51:061458ブラウズ

Web 開発では、ファイルのアップロードとダウンロードは非常に一般的な要件です。ユーザーがアバターやドキュメントをアップロードする場合でも、管理者がユーザーにファイルのダウンロードを要求する場合でも、この機能は必要です。 PHP は強力なサーバーサイド言語として、強力なファイル操作関数とクラス ライブラリを当然提供しており、ファイルのアップロードおよびダウンロード機能を簡単に実装できます。

この記事では、PHP でファイルのアップロードとダウンロードを実装するための基本的なプロセスと共通の関数を紹介し、サンプル コードを提供します。あなたが PHP の初心者であるか、ファイル操作を学習している場合、この記事が何らかのガイダンスと助けになることを願っています。

ファイルのアップロード

PHP では、ファイルのアップロードは HTTP プロトコルを通じて実装されます。つまり、ユーザーはフォームを通じてローカル ファイルを選択し、それをサーバーにアップロードできます。使用する必要がある関数は、$_FILES グローバル変数と move_uploaded_file() 関数です。

まず、フロントエンドで HTML フォームを記述する必要があります。コードは次のとおりです。

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传文件">
</form>

投稿するフォームのメソッド、バックグラウンド処理ファイルのアップロード用の php ファイルへのアクション、および enctype を次のように設定する必要があることに注意してください。ファイルのアップロードをサポートする multipart/form-data。

次に、ファイルのアップロードを処理するために、バックグラウンドで Upload.php ファイルにコードを記述します。コードは次のとおりです。

<?php
if(isset($_FILES['file'])){
    $file = $_FILES['file'];
    $filename = $file['name'];
    $tmp_name = $file['tmp_name'];
    $target_path = "./uploads/".$filename;
    move_uploaded_file($tmp_name, $target_path);
    echo "文件上传成功";
}
?>

if を使用してファイルがアップロードされているかどうかを判断し、ファイルに関するさまざまな情報を $_FILES 配列から取得します。 $file['name'] はファイル名を表し、$file['tmp_name'] は一時ファイルのファイル パスを表します。これをサーバー上の指定された場所 (「./uploads/」ディレクトリであると仮定して) に移動し、最後にアップロード成功のメッセージを出力する必要があります。

ファイルのダウンロード

ファイルのダウンロードとは、ユーザーがリンクまたはボタンをクリックしてサーバーからローカルにファイルをダウンロードできることを意味します。使用する必要がある関数は、header() 関数と readfile() 関数です。

まず、ユーザーがファイルをダウンロードできるように、サーバー上のファイルのアクセス許可を設定する必要があります。 .htaccess ファイルまたは Web サーバーの構成ファイルを通じて設定できます。

次に、フロントエンドで HTML コードを記述して、ダウンロード リンクを生成します。コードは次のとおりです。

<a href="download.php?filename=test.pdf">点击下载文件</a>

バックグラウンド処理ファイルによってダウンロードされた php ファイルへのリンクの href を設定する必要があり、ファイル名をパラメータとして取得する必要があることに注意してください。リンク。

最後に、ファイルのダウンロードを処理するために、バックグラウンドで download.php ファイルにコードを記述します。コードは次のとおりです。

<?php
if(isset($_GET['filename'])){
    $filename = "./uploads/".$_GET['filename'];
    if(file_exists($filename)){
        header('Content-type: application/pdf');
        header('Content-Disposition: attachment; filename="'.basename($filename).'"');
        readfile($filename);
        exit;
    }else{
        echo "文件不存在";
    }
}
?>

if を使用して、渡されたファイル名パラメータがあるかどうかを判断し、ファイル名に基づいてファイルの絶対パスを生成します。ファイルが存在する場合は、Content-type をファイル タイプ (ここでは pdf タイプであると仮定します) に設定し、Content-Disposition を添付ファイルに設定する必要があります。これは、添付ファイルとしてダウンロードしてファイルのコンテンツを出力することを意味します。最後に、ブラウザが他のコンテンツを出力しないように exit を追加します。

概要

この記事の簡単な紹介を通じて、読者は PHP でのファイルのアップロードとダウンロードについてより深く理解できると思います。ファイルのアップロードとダウンロードの両方の操作では、アップロードされるファイルのサイズと種類の制限、ダウンロード リンクの侵入防止など、セキュリティとユーザー エクスペリエンスを考慮する必要があることに注意してください。ファイル操作を実装する際には、読者もこれらの詳細に注意してください。

以上がPHP 入門: ファイルのアップロードとダウンロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。