ホームページ > バックエンド開発 > PHPチュートリアル > PHP 開発ノート シリーズ (8) - アップロードとダウンロード

PHP 開発ノート シリーズ (8) - アップロードとダウンロード

WBOY
リリース: 2016-06-13 13:25:40
オリジナル
742 人が閲覧しました

PHP 開発ノート シリーズ (8) - アップロードとダウンロード

??? 最近、プロジェクトの必要に応じて GZBGY でリトリートを行い、開発者仲間と深い交流をしましたが、良い結果が得られました。紛失しました 「PHP 開発ノート シリーズ (XAMPP+PhpEclipse+XDebug)」 、今日も更新します、今回はアップロードとダウンロードについて話します。

?

??? アップロードとダウンロードの 2 つの機能は、Java の開発では通常の基本的な機能であり、ダウンロードではファイルの内容をストリーム形式で応答に書き込みます。対応する http ヘッダーを設定して、これがファイルのダウンロードであることをブラウザーが認識できるようにします。 PHPでも同様で、こちらの記事「PHP開発ノートシリーズ(8) - アップロードとダウンロード」 「PHP開発ノートシリーズ(XAMPP+PhpEclipse+XDebug)」になります。 8 番目の記事では、PHP を使用してファイルのアップロードおよびダウンロード操作を完了する方法について説明します。


??? 1. ファイルのダウンロード

??? ファイルのダウンロード操作は、1) http ヘッダーの設定、2) ファイルの読み取りの 2 つの部分に分かれています。ここでは 2 つの php スクリプトを作成します。1 つ目は file-list.php で、ダウンロードするために現在のフォルダー内のすべてのフォルダーとファイルを表示するために使用されます。2 つ目は、特定のダウンロード コードを含む download.php です。コードは次のとおりです:

?

file:file-list.php
url:http://localhost:88/download-upload/file-list.php
<?php
    $location = './';
    
    $dp = opendir($location);
    
    while ($entry = readdir($dp)){
        if(is_dir($entry))
        {
            echo '[DIR] '.$entry. '<br/>';
        }elseif (is_file($entry))
        {
            echo '[FILE] <a href=download.php?filename='.$entry.'>'.$entry. '</a><br/>';
        }
    }
    closedir($dp);
    
    echo "<a href='upload-form.php'>upload</a>";

?>
ログイン後にコピー
?

?

file:download.php
url:http://localhost:88/download-upload/download.php?filename=xxx
<?php
    if (isset($_GET['filename'])) {
        $filename = $_GET['filename'];
    } else {
        die('Parameter filename doesn\'t exist!');
    }
    
    if (!file_exists($filename)) {
       die($filename.' doesn\'t exist!'); 
    }
    
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length: ".filesize($filename));
    Header("Content-Disposition: attachment; filename=" . $filename); 
    
    readfile($filename);
    
?>
ログイン後にコピー
?

??? 2. ファイルのアップロード

??? PHP では、enctype "multipart/form-data" のリクエストを自動的に認識し、内部のファイル フィールドの内容を PHP の tmp ファイルに自動的にアップロードするため、ファイルのアップロードは非常に簡単です。 、 $_FILES["ファイルドメイン名"]["プロパティ"] を渡すことができます。 $_FILES["ファイル"]["名前"] はアップロードされたファイルの元の名前を表します。 $_FILES["ファイル"][ " type"] はアップロードされたファイルのタイプを表し、$_FILES["file"]["tmp_name"] は php 一時フォルダー内のアップロードされたファイルのパスを表します。生成された一時ファイルはクリアされるため、move_uploaded_file() 関数を使用して一時ファイルを指定したディレクトリに移動する必要があります。最初のパラメータは一時ファイルのパス、2 番目のパラメータはターゲット ファイルのパスです。 。コードは次のとおりです:

?

file:upload-form.php
url:http://localhost:88/download-upload/upload-form.php
<form action="upload.php" method="post" enctype="multipart/form-data">
	<label for="file">Filename:</label> 
	<input type="file" name="file" id="file" /> <br />
	<input type="submit" name="submit" value="Submit" />
</form>
ログイン後にコピー
?

?

file:upload.php
url:http://localhost:88/download-upload/upload.php
<?php
if ($_FILES["file"]["error"] > 0)
{
    echo "Error: ".$_FILES["file"]["error"] . "<br />";
}
else
{
    echo "Upload: ".$_FILES["file"]["name"]."<br />";
    echo "Type: ".$_FILES["file"]["type"]."<br />";
    echo "Size: ".($_FILES["file"]["size"] / 1024)." Kb<br />";
    echo "Temp file: ".$_FILES["file"]["tmp_name"]."<br />";
    
    move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
    
    echo "<a href='file-list.php'>file-list</a>";
}
?>
ログイン後にコピー
?

?? この記事のアドレス: http://ryan-d.iteye.com/blog/1546706

?

?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート