PHPを使用すると、サーバーにファイルをアップロードすることは容易です。
しかし、簡単に危険が来るので、ファイルのアップロードを許可するときは、常に注意してください!
設定"php.ini"ファイルを
まず、PHPはファイルのアップロードを許可するように設定されていることを確認してください。
あなたに"php.ini"ファイル、file_uploadsディレクティブを検索し、オンに設定します。
file_uploads = On
HTMLフォームを作成します。
次に、ユーザーがアップロードしたい画像ファイルを選択できるようにHTMLフォームを作成します。
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
Select
image to upload:
<input type="file" name="fileToUpload"
id="fileToUpload">
<input
type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
上記のHTMLフォームのために従うべきいくつかのルール:
- フォームがメソッドを使用していることを確認してください=「ポスト」
- フォームも必要followingにenctype = "multipart / form-データ":属性を。 これは、フォームを送信するときに使用するコンテンツタイプを指定します
上記の要件がなければ、ファイルのアップロードは動作しません。
注目すべき他の事:
- type="file"の属性<input>タグでファイル選択制御などの入力フィールドを示す"Browse"ボタン入力コントロールの隣
フォームは、上記と呼ばれるファイルにデータを送る"upload.php"我々が次に作成されます。
ファイルのアップロードPHPスクリプトを作成します。
"upload.php"ファイルは、ファイルをアップロードするためのコードが含まれています。
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a
actual image or fake image
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;
}
}
?>
PHPスクリプトは説明しました:
- $をtarget_dir = "uploads/" -ファイルが置かれようとしているディレクトリを指定します
- $のTARGET_FILEは、アップロードするファイルのパスを指定します
- $ uploadOk = 1まだ使用されていません(will be used later)
- $ imageFileTypeは、ファイルの拡張子を保持しています
- 画像ファイルは、実際の画像や偽の画像であれば次に、チェック
注意:あなたはと呼ばれる新しいディレクトリを作成する必要があります"uploads"ディレクトリ内の"upload.php"ファイルが存在します。 アップロードされたファイルが保存されます。
ファイルが既に存在するかどうかをチェック
今、私たちはいくつかの制限を追加することができます。
ファイルがすでに存在する場合はまず、我々はチェックします"uploads"フォルダ。 それがない場合は、エラーメッセージが表示され、$ uploadOkは0に設定されています:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
ファイルサイズの制限
上記の私たちのHTML形式のファイル入力フィールドの名前は"fileToUpload" 。
今、私たちは、ファイルのサイズを確認したいです。 ファイルが500キロバイトよりも大きい場合、エラーメッセージが表示され、$ uploadOkは0に設定されています:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
制限ファイルタイプ
以下のコードは、ユーザーがJPG、JPEG、PNG、およびGIFファイルをアップロードすることができます。 他のすべてのファイルタイプ0に$ uploadOkを設定する前に、エラーメッセージを表示します。
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType
!= "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
完全なファイルのアップロードPHPスクリプト
完全な"upload.php"ファイルは次のようになります。
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a
actual image or fake image
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;
}
}
// Check if file already
exists
if (file_exists($target_file)) {
echo
"Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType
!= "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if
($uploadOk == 0) {
echo "Sorry, your file was not
uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been
uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
PHPファイルシステムの参照を完了します
ファイルシステム関数の完全なリファレンスについては、当社の完全に行くPHPファイルシステムのリファレンス 。