ホームページ バックエンド開発 PHPチュートリアル PHP のファイルのアップロードとダウンロードのテクノロジ

PHP のファイルのアップロードとダウンロードのテクノロジ

May 10, 2023 pm 10:31 PM
ファイルのアップロード ドキュメントをダウンロード php言語プログラミング

PHP は Web 開発で広く使用されているプログラミング言語で、そのシンプルさ、学習の容易さ、高い拡張性、短い開発サイクルを特徴としており、開発者に広く愛されています。 Web 開発では、ファイルのアップロードとダウンロードは一般的な要件であり、PHP には、これらの機能を簡単に実装できるようにするいくつかの組み込み関数とクラスが用意されています。この記事では、PHP におけるファイルのアップロードとダウンロードのテクノロジを紹介します。

1. ファイルアップロード技術

  1. HTML フォーム

HTML では、input タグの type 属性を「file」として使用して、ファイルアップロードフォーム要素は次のとおりです:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="上传文件" name="submit">
</form>
ログイン後にコピー

フォームはPOSTメソッドを使用して送信する必要があり、enctype属性を「multipart/form-data」に設定する必要があることに注意してください。フォームがファイルのアップロードをサポートできるようにします。同時に、「fileToUpload」という name 属性を持つ input 要素を作成する必要があります。この属性値は、アップロードされたファイルを取得するために後続の PHP コードで使用されます。

  1. PHP 処理

ユーザーがフォームを送信してファイルをアップロードした後、それをバックグラウンドで処理する必要があります。 PHP では、$_FILES スーパー グローバル配列を使用して、アップロードされたファイルを取得できます。

<?php
$target_dir = "./uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 检查文件是否是图片
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// 检查文件是否已经存在
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// 允许上传的文件类型
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

// 如果所有检查都通过,上传文件
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>
ログイン後にコピー

上記のコードでは、まずアップロードされたファイルを保存するディレクトリ $target_dir を定義し、次にユーザーと $target_dir によってアップロードされたファイル名に基づいてターゲット ファイル パス $target_file を生成します。次に、アップロードされたファイルに対して次のような一連のチェックを実行しました。

  • #ファイルが画像ファイルであるかどうかを確認する
  • ファイルが既に存在するかどうかを確認する
  • ファイルをチェックしてください。サイズが大きすぎないかどうかを確認してください。
  • アップロードされたファイルの種類が許可されているかどうかを確認してください。
#最後に、すべてのチェックに合格したら、move_uploaded_file 関数を使用してアップロードされたファイルを移動します。 tmp ディレクトリから $ target_file で指定された場所。

2. ファイル ダウンロード テクノロジ

ファイルのダウンロードは、一般的に 2 つの方法に分けられます。1 つは静的ファイル (画像、テキスト ファイル、オーディオ ファイル、ビデオ ファイルなど) をダウンロードする方法です。 ; もう 1 つは、動的に生成されたファイルをダウンロードする方法ですが、これは比較的面倒です。

    静的ファイルのダウンロード
PHP では、header() 関数を通じてファイルをダウンロードできます。例:

$file = "./downloads/test.txt";

// 设置HTTP头信息以告诉浏览器下载文件
header("Content-disposition: attachment;filename=".basename($file));
header("Content-type: application/octet-stream");
header("Content-Length: ".filesize($file));
header("Pragma: no-cache");
header("Expires: 0");

// 将文件内容读取并输出给浏览器
readfile($file);
ログイン後にコピー

上記のコード内では、まずファイル $file を指定し、header() 関数を使用して HTTP ヘッダー情報を設定します。このうち、Content-disposition はダウンロードされるファイルの名前を指定し、Content-type はファイルの種類を指定し、Content-Length はファイル サイズを指定します。Pragma と Expires は、ブラウザーがダウンロードされたファイルをキャッシュしないようにするために使用されます。

最後に、readfile() 関数を使用して、指定されたファイルの内容を読み取り、クライアントのブラウザに出力することで、ファイルのダウンロード機能を実現します。

    動的に生成されたファイルのダウンロード
動的に生成されたファイルの場合は、まずサーバーに保存してから、静的ファイルとしてダウンロードする必要があります。

$content = "Hello, world!";
$filename = "test.txt";
$file = "./downloads/".$filename;

// 将内容写入到文件中
$handle = fopen($file, "w");
fwrite($handle, $content);
fclose($handle);

// 返回下载文件给客户端
header("Content-disposition: attachment;filename=".$filename);
header("Content-type: application/octet-stream");
header("Content-Length: ".filesize($file));
header("Pragma: no-cache");
header("Expires: 0");
readfile($file);

// 下载完成后删除服务器端的文件
unlink($file);
ログイン後にコピー
上記のコードでは、まず動的に生成されたファイル $content をサーバー側のファイル $filename に保存し、次に header() 関数を通じて HTTP ヘッダー情報を設定して、クライアントのブラウザーがダウンロードできるようにします。ファイル。最後に、unlink() 関数を使用してサーバー側のファイルを削除し、ファイルがサーバー側のリソースを占有するのを防ぎます。

概要

この記事では、Web アプリケーションの開発に非常に役立つ PHP のファイル アップロードおよびダウンロード テクノロジを紹介します。 PHP を使用してファイルをアップロードおよびダウンロードする場合は、悪意のあるユーザーによる攻撃を避けるために、ファイルの種類、サイズ、ファイル名などを確認するなど、いくつかのセキュリティ上の問題に注意する必要があります。同時に、ファイルのアップロードとダウンロードのパフォーマンスを最適化し、サーバーとクライアントのリソースの無駄を削減し、ユーザー エクスペリエンスを向上させるために最善を尽くす必要があります。

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ファイルをダウンロードした後にPythonで開く操作 ファイルをダウンロードした後にPythonで開く操作 Apr 03, 2024 pm 03:39 PM

Python には、ダウンロードしたファイルを開くための次のオプションが用意されています。 open() 関数: 指定されたパスとモード (「r」、「w」、「a」など) を使用してファイルを開きます。リクエスト ライブラリ: download() メソッドを使用して、名前を自動的に割り当て、ファイルを直接開きます。 Pathlib ライブラリ: write_bytes() メソッドと read_text() メソッドを使用して、ファイルの内容を読み書きします。

Workerman ドキュメントにファイルのアップロードとダウンロードを実装する Workerman ドキュメントにファイルのアップロードとダウンロードを実装する Nov 08, 2023 pm 06:02 PM

Workerman ドキュメントでファイルのアップロードとダウンロードを実装するには、特定のコード サンプルが必要です はじめに: Workerman は、シンプル、効率的、使いやすい高性能 PHP 非同期ネットワーク通信フレームワークです。実際の開発では、ファイルのアップロードとダウンロードが一般的な機能要件となりますが、この記事では、Workerman フレームワークを使用してファイルのアップロードとダウンロードを実装する方法と、具体的なコード例を紹介します。 1. ファイル アップロード: ファイル アップロードとは、ローカル コンピューター上のファイルをサーバーに転送する操作を指します。以下が使用されます

PHP 関数を使用して、電子メールの送受信用の添付ファイルをアップロードおよびダウンロードするにはどうすればよいですか? PHP 関数を使用して、電子メールの送受信用の添付ファイルをアップロードおよびダウンロードするにはどうすればよいですか? Jul 25, 2023 pm 08:17 PM

PHP 関数を使用して、電子メールの送受信用の添付ファイルをアップロードおよびダウンロードするにはどうすればよいですか?現代の通信技術の急速な発展に伴い、電子メールは人々が日常生活で情報を伝達および伝達するための重要な手段となっています。 Web 開発では、添付ファイル付きの電子メールを送受信する必要がよく発生します。 PHP は強力なサーバー側スクリプト言語として、電子メール処理プロセスを簡素化できる豊富な関数とクラス ライブラリを提供します。この記事では、PHPの関数を使ってメール送受信時の添付ファイルをアップロード・ダウンロードする方法を紹介します。電子メールが最初に送信されます。

Laravelを使用してファイルのアップロードおよびダウンロード機能を実装する方法 Laravelを使用してファイルのアップロードおよびダウンロード機能を実装する方法 Nov 02, 2023 pm 04:36 PM

Laravel を使用してファイルのアップロードおよびダウンロード機能を実装する方法 Laravel は、Web アプリケーションの開発をより簡単かつ効率的にするための豊富な機能とツールを提供する人気のある PHP Web フレームワークです。よく使用される機能の 1 つは、ファイルのアップロードとダウンロードです。この記事では、Laravelを使用してファイルのアップロードおよびダウンロード機能を実装する方法と、具体的なコード例を紹介します。ファイルのアップロード ファイルのアップロードとは、ローカル ファイルを保存するためにサーバーにアップロードすることを指します。 Laravelではファイルアップロードを使用できます

Javaファイルアップロード例外(FileUploadException)の解決方法 Javaファイルアップロード例外(FileUploadException)の解決方法 Aug 18, 2023 pm 12:11 PM

Java ファイルアップロード例外 (FileUploadException) を解決する方法 Web 開発でよく遭遇する問題の 1 つは、FileUploadException (ファイル アップロード例外) です。この問題は、ファイル サイズが制限を超えている、ファイル形式が一致していない、サーバー構成が正しくないなど、さまざまな理由で発生する可能性があります。この記事では、これらの問題を解決するいくつかの方法について説明し、対応するコード例を示します。アップロードされるファイルのサイズを制限する ほとんどのシナリオでは、ファイル サイズを制限します

gRPC を使用して Golang でファイルのアップロードを実装するにはどうすればよいですか? gRPC を使用して Golang でファイルのアップロードを実装するにはどうすればよいですか? Jun 03, 2024 pm 04:54 PM

gRPC を使用してファイルのアップロードを実装するにはどうすればよいですか?リクエストおよびレスポンスメッセージを含むサポートサービス定義を作成します。クライアントでは、アップロードされるファイルが開かれてチャンクに分割され、gRPC ストリーム経由でサーバーにストリーミングされます。サーバー側では、ファイル チャンクが受信され、ファイルに保存されます。ファイルのアップロードが完了すると、サーバーはアップロードが成功したかどうかを示す応答を送信します。

HTML ボタンまたは JavaScript をクリックしたときにファイルのダウンロードをトリガーするにはどうすればよいですか? HTML ボタンまたは JavaScript をクリックしたときにファイルのダウンロードをトリガーするにはどうすればよいですか? Sep 12, 2023 pm 12:49 PM

現在、多くのアプリケーションでユーザーはファイルをアップロードおよびダウンロードできます。たとえば、盗作検出ツールを使用すると、ユーザーはテキストを含むドキュメント ファイルをアップロードできます。次に、盗作がないかチェックし、ユーザーがダウンロードできるレポートを生成します。 inputtypefile を使用してファイル アップロード ボタンを作成する方法は誰もが知っていますが、JavaScript/JQuery を使用してファイル ダウンロード ボタンを作成する方法を知っている開発者はほとんどいません。このチュートリアルでは、HTML ボタンまたは JavaScript がクリックされたときにファイルのダウンロードをトリガーするさまざまな方法を説明します。 HTML の <a> タグと download 属性を使用して、ボタンがクリックされたときにファイルのダウンロードをトリガーします。

ファイルのダウンロードに Hyperf フレームワークを使用する方法 ファイルのダウンロードに Hyperf フレームワークを使用する方法 Oct 21, 2023 am 08:23 AM

Hyperf フレームワークを使用してファイルをダウンロードする方法 はじめに: ファイルのダウンロードは、Hyperf フレームワークを使用して Web アプリケーションを開発する場合の一般的な要件です。この記事では、Hyperf フレームワークを使用してファイルをダウンロードする方法を、具体的なコード例を含めて紹介します。 1. 準備 開始する前に、Hyperf フレームワークがインストールされ、Hyperf アプリケーションが正常に作成されていることを確認してください。 2. ファイル ダウンロード コントローラーを作成する まず、ファイル ダウンロード リクエストを処理するコントローラーを作成する必要があります。ターミナルを開いて入力します

See all articles