Latest web development tutorials
×

PHP コース

PHP コース PHP 簡単な紹介 PHP インストール PHP 文法 PHP 変数 PHP echo/print PHP データの種類 PHP 定数 PHP 文字列 PHP 演算子 PHP If...Else PHP Switch PHP 配列 PHP 配列のソート PHP スーパーグローバル PHP While 循環 PHP For 循環 PHP 関数 PHP マジック変数 PHP 名前空間 PHP オブジェクト指向の

PHP フォーム

PHP フォーム PHP フォーム認証 PHP フォーム - 必要なフィールド PHP フォーム - 確認メールおよびURL PHP 完全なフォームインスタンス PHP $_GET 変数 PHP $_POST 変数

PHP 応用チュートリアル

PHP 多次元配列 PHP 日付 PHP 含みます PHP ファイル PHP ファイルのアップロード PHP Cookie PHP Session PHP E-mail PHP セキュリティ E-mail PHP Error PHP Exception PHP フィルタ PHP 高度なフィルタ PHP JSON

PHP 7 新機能

PHP 7 新機能

PHP データベース

PHP MySQL 簡単な紹介 PHP MySQL 接続 PHP MySQL データベースの作成 PHP MySQL データテーブルを作成します。 PHP MySQL データを挿入 PHP MySQL 複数のデータの挿入 PHP MySQL プリペアドステートメント PHP MySQL データを読みます PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 簡単な紹介 AJAX PHP AJAX データベース AJAX XML AJAX 実時間探索 AJAX RSS Reader AJAX 投票

PHP リファレンスマニュアル

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 画像処理 PHP RESTful

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

PHPことにより、サーバーにファイルをアップロードすることができます。

テストプロジェクトの下でこのセクションの例では、ディレクトリ構造完了です。

test
|-----upload             # 文件上传的目录
|-----form.html          # 表单文件
|-----upload_file.php    # php 上传代码

ファイルアップロードフォームを作成します。

ユーザーが便利であるフォームからファイルをアップロードすることができます。

ファイルをアップロードするために、次のHTMLフォームを考えてみましょう:

<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
	<label for="file">文件名:</label>
	<input type="file" name="file" id="file"><br>
	<input type="submit" name="submit" value="提交">
</form>

</body>
</html>

ファイルをform.htmlする上記のコードを保存します。

上記のHTMLフォームに関連するいくつかの項目は次のとおりです。

  • 使用するタイプのフォームを提出する際に、<フォーム>タグのenctype属性は、コンテンツを指定します。 フォームは、このようなファイルの内容などのバイナリデータを、必要とするとき、"multipart / form-data" 使用します。
  • <input>タグの種類= "file"属性は、入力がファイルとして扱われるべきで指定します。ブラウザでプレビューするときたとえば、あなたが次の入力ボックスに参照[参照]ボタンを持っています。

注:ユーザーがファイルをアップロードすることを許可すると、巨大なセキュリティリスクです。唯一の信頼できるユーザーは、ファイルのアップロードを行うことができますしてください。


アップロードスクリプトを作成します。

「Upload_file.php」ファイルには、ファイルをアップロードするためのコードが含まれています。

<?php
if ($_FILES["file"]["error"] > 0)
{
	echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{
	echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
	echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
	echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
	echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
?>

PHPのグローバル配列$ _FILESを使用して、クライアントコンピュータからリモートサーバーにファイルをアップロードすることができます。

最初のパラメータは、フォームの入力名であり、第二の添え字は、「名前」、「タイプ」、「サイズ」、「tmp_name "または"エラー "することができます。 次のように:

  • $ _FILES [ "ファイル"] [ "名前"] - アップロードされたファイルの名前
  • $ _FILES [ "ファイル"] [ "タイプ"] - ファイルの種類をアップロード
  • $ _FILES [ "ファイル"] [ "サイズ"] - バイト単位でファイルサイズをアップロード
  • $ _FILES [ "ファイル"] [ "tmp_name"] - 一時的なコピーがファイルサーバの名前で保存されています
  • $ _FILES [ "ファイル"] [ "エラー"] - ファイルのアップロードに起因するエラーコード

これは非常に単純なファイルのアップロードです。 セキュリティの考慮事項に基づいて、ユーザーがファイルをアップロードすることが許可されているに制限を増やす必要があります。


アップロード制限

このスクリプトでは、ファイルのアップロード制限に追加しました。 ユーザーがファイルのみを.pngを、.JPEG、.JPGを.GIFアップロードすることができ、ファイルサイズは200キロバイト未満でなければなりません。

<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);        // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)    // 小于 200 kb
&& in_array($extension, $allowedExts))
{
	if ($_FILES["file"]["error"] > 0)
	{
		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
	}
	else
	{
		echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
		echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
		echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
		echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
	}
}
else
{
	echo "非法的文件格式";
}
?>


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

上記の例では、一時的なファイルサーバのPHPのフォルダにアップロードされたファイルの一時的なコピーを作成することです。

ファイルの一時的なコピーは、スクリプトの最後に表示されなくなります。 アップロードされたファイルを保存するには、我々は別の場所にコピーする必要があります。

<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp);     // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
&& in_array($extension, $allowedExts))
{
	if ($_FILES["file"]["error"] > 0)
	{
		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
	}
	else
	{
		echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
		echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
		echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
		echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
		
		// 判断当期目录下的 upload 目录是否存在该文件
		// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
		if (file_exists("upload/" . $_FILES["file"]["name"]))
		{
			echo $_FILES["file"]["name"] . " 文件已经存在。 ";
		}
		else
		{
			// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
			move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
			echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
		}
	}
}
else
{
	echo "非法的文件格式";
}
?>

上記のスクリプトは、ファイルが既に存在するかどうかを検出し、そうでない場合、ファイルはの「アップロード」というディレクトリにコピーされます置きます。

次のようにデモファイルのアップロード処理は、次のとおりです。