phpファイルのアップロード

Jun 04, 2018 pm 05:21 PM
php アップロード 書類

PHP ファイルのアップロード技術を本当にマスターしましたか?この記事には、php ファイルのアップロードに関する関連情報がまとめられています。興味のある方は参考にしてください。

まず最初に、この章は内容が多く、理解する必要があることをお断りしておきます。それは自分と戦う姿勢。微妙な点を見逃さず、どんどん練習することが大切です。
学習は山に登るようなもので、最初に小さな目標を設定し、それから粘り強く登っていき、最終的には頂上に到達する必要があります。
上記 2 つのアドバイスを注意深く検討してください

1. 私の準備の説明。

エディタ: sublime text3 (どのエディタを使用するかは好みによって異なります)
サーバー構築: phpstudy2014を使用してサーバーを構築し、サーバーファイルはDドライブのwwwファイルに保存されます私のコンピュータの。 (phpstudy をインストールすると www ファイルが自動的に生成されます。それをどのディスクにインストールするかはユーザーが決定します)。 phpstudy を実行し、ブラウザのアドレス バーに「localhost」と入力して、サーバー上のファイルにアクセスします。
ファイルをアップロードするプロセス: ブラウザがクライアントにファイルをアップロードし、[送信]をクリックすると、ファイルは処理のためにサーバー内のphpファイルに送信され、phpはアップロードされたファイルをサーバーに保存します。

2. フォームを作成します

私のHTMLコードをご覧ください

enctype

Form要素の構文では、EncType属性を使用して送信時のブラウザを指定します。サーバーに返されるデータ。使用されるエンコーディング タイプ。 enctype には 3 つのタイプがあります:
1. application/x-www-form-urlencoded: フォーム データは名前と値のペアとしてエンコードされます。これは標準のエンコード形式です。
2. multipart/form-data: フォーム データはメッセージとしてエンコードされ、ページ上の各コントロールはメッセージの一部に対応します。
3. text/plain: フォーム データは、コントロールや書式設定文字を含まないプレーン テキストでエンコードされます。
補足 (ちょっと見てください): ORM の enctype 属性は、一般的に使用される 2 つのメソッドです: application/x-www-form-urlencoded と multipart/form-data です。デフォルトは application/x-www です。 -フォームURLエンコード。 アクションが get の場合、ブラウザーは x-www-form-urlencoded エンコーディング メソッドを使用してフォーム データを文字列 (name1=value1&name2=value2...) に変換し、その文字列を URL の末尾に追加して分割します。 ? を付けて、この新しい URL をロードします。 アクションがポストされると、ブラウザーはフォーム データを http 本文にカプセル化し、それをサーバーに送信します。 type=file コントロールがない場合は、デフォルトの application/x-www-form-urlencoded を使用してください。 ただし、type=file がある場合は、multipart/form-data が使用されます。ブラウザはフォーム全体をコントロールユニットに分割し、Content-Disposition (フォームデータまたはファイル)、Content-Type (デフォルトは text/plain)、name (コントロール名)、および区切り文字の追加 (境界) などの情報を追加します。 。

ちょっとわかりにくいですね。
つまり、input タグに type=file がある場合は、enctype=multipart/form-data という 2 つの文を覚えておいてください。 type=file がない場合は、通常、application/x-www-form-urlencoded が使用されます。
ファイルをアップロードする場合、データはサーバーにアップロードする前に特定の変換を受ける必要があります。 application/x-www-form-urlencoded と multipart/form-data の違いは、変換エンコード方法です。

3. アップロードされたファイルを処理するための php ファイルを作成します。

ファイルをアップロードした後の効果は次のとおりです:

アップロードされた各ファイルには、名前、タイプ、サイズ、tmp_name、およびその他の情報が含まれます。ファイルがアップロードされると、ファイル関連の情報が FILES 配列変数に格納されます。 _FILES["myfile"]["name"] は、多次元配列にアクセスすることと同じです。FILES は、まず myfile という名前の入力フォームによってアップロードされたファイル データを取得し、次に名前、タイプ、サイズ、エラーなどのデータにアクセスします。 _FILES["myfile"]["error"] は、アップロードされるファイルのサイズ制限を超えるなど、ファイルが正常にアップロードされない状況を処理するために使用されます。 FILES["myfile"]["error"]=0 の場合、ファイルは正常にアップロードされたことを意味します。 _FILES["myfile"]["error"]>0 は、ファイルが正常にアップロードされなかったことを意味します。
FILES["myfile"]["error"]=1 アップロードされたファイルはサーバーの容量サイズを超えるなど、サーバーの制限を超えています。 _FILES["myfile"]["error"]=2 ブラウザのアップロード制限を超えています $_FILES["myfile"]["error"]=3 ファイルの一部のみがアップロードされます

FILES["myfile"]["エラー”]=4ファイルがアップロードされていません。 _FILES["myfile"]["error"] は 5、6、7、または 8 にすることもできます。ここでは詳しく説明しませんが、0 より大きい場合はアップロード中にエラーがあることを意味します。ファイル。

アップロード制限

通常、サーバーはアップロードするファイルのサイズまたは種類を制限します。上記のphpコードを元に、アップロードするファイルのコードに制限を追加します。
まず、いくつかの関数の使用法を理解してください:
explode() この関数は文字列を分割するために使用されます。たとえば、explode(".","aaa.HTML") は文字列を "aaa" と " HTML に分割します。 " 2 つの文字列の場合、2 つの文字列は同じ配列に順番に格納されます。
end()配列の最後の要素の値を取得します。
in_array() 配列内の要素を検索して、要素が存在する場合は true を返し、存在しない場合は false を返します。

<?php
//第一步:明确服务器规定上传至服务器的文件类型。这里我们只允许上传以下类型的图片。
$allowedExts = array("gif", "jpeg", "jpg", "png");// 允许上传的图片后缀
//第二部:获取上传的文件名称,通过explorde()函数将其分割成字符串形式的数组。
$temp = explode(".", $_FILES["myfile"]["name"]);
echo $_FILES["file"]["size"];

$extension = end($temp);   // end函数用于获取数组中最后一个元素的值。
//第三步:列出上传文件需要满足的条件
if ((($_FILES["myfile"]["type"] == "image/gif")
|| ($_FILES["myfile"]["type"] == "image/jpeg")
|| ($_FILES[myfile"]["type"] == "image/jpg")
|| ($_FILES["myfile"]["type"] == "image/pjpeg")
|| ($_FILES["myfile"]["type"] == "image/x-png")
|| ($_FILES["myfile"]["type"] == "image/png"))
&& ($_FILES["myfile"]["size"] < 204800)  // 小于 200 kb
&& in_array($extension, $allowedExts))
  //in_array表示在$allowedExts数组中查找$extension这个字符串
{
  if ($_FILES["myfile"]["error"] > 0)
  {
    echo "错误:: " . $_FILES["myfile"]["error"] . "<br>";
    //举个例子服务器空间不足,文件只能上传部分就会出现错误。
  }
  else
  {
    echo "上传文件名: " . $_FILES["myfile"]["name"] . "<br>";
    echo "文件类型: " . $_FILES["myfile"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["myfile"]["size"] / 1024) . " kB<br>";
    echo "文件临时存储的位置: " . $_FILES["myfile"]["tmp_name"] . "<br>";
  }
}
else
{
  echo "非法的文件格式";
}
?>
ログイン後にコピー

4. アップロードしたファイルを保存します

ファイルがアップロードされると、一時的な場所に保存されます。スクリプトが終了すると消えます。サーバーに永続的に保存したい場合は、別の場所に保存する必要があります。
. file_exists(“upload/” . FILES[“file”][“name”]) は、ファイルまたはディレクトリが存在するかどうかを確認します。 .moveuploadedfile(_FILES["file"]["tmp_name"], "upload/" . $_FILES["myfile"]["name"]);アップロードされたファイルを一時的な場所からサーバー スペースに移動します。

りー

以上が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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles