ホームページ  >  記事  >  バックエンド開発  >  PHP で画像をアップロードして置換するにはどうすればよいですか?

PHP で画像をアップロードして置換するにはどうすればよいですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-24 14:52:192162ブラウズ

画像をアップロードして置換するための PHP メソッド: 最初に 2 つのファイルを作成します。次に、アップロードされるファイルの最大長を制限するために隠しフィールドが必要です。次に、最初にファイル タイプが画像形式かどうかを判断し、画像形式である場合は、 、ファイルをアップロードします; 最後に、ファイルをアップロードして、指定したファイルを置き換えるだけです。

PHP で画像をアップロードして置換するにはどうすればよいですか?

画像をアップロードして置換するための PHP メソッド:

最初に 2 つのファイルを作成します:change.html と change .php

change.html ファイルのフォーム コードは次のとおりです。

<html>
<head>
<title>change file example.</title>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="changefile.php" enctype="multipart/form-data">
<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
<tr>
<td width=55 height=20 align="center">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
文件:
</td>
<td>
<input name="file" type="file" />
<input type="submit" name="submit" value="submit" /> 
</td>
</tr>
</table>
</form>
</body>
</html>

ここで注意すべき点がいくつかあります。まずこの文を見てください。

<form method="post" action="change.php" enctype="multipart/form-data">

ここでは POST メソッドを使用します。ブラウザによっては PUT メソッドもサポートしています。もちろん、これにはスクリプトの変更が必要ですが、お勧めしません。 enctype="multipart/form-data は、アップロードされたファイルに通常のフォーム情報が含まれていることをサーバーが認識できるように、フォームに設定する必要があります。これは必ず設定する必要があることに注意してください。アップロードされるファイルの最大長を制限するための隠しフィールド:

cf0d3d6ea3f6050b67efec7d0a3cf718

、ここで name は次のように設定する必要があります。 MAX_FILE_SIZE 、その値はアップロードされるファイルの最大長で、単位は B で、ここでは 2M に制限します。 この文をもう一度見てください:

<input name="file" type="file"   value="浏览" >

type="file" は、ファイルの種類を説明します。これで、基本的なファイル アップロード インターフェイスが完成しました。次に、PHP を使用してアップロードされたファイルを処理する方法について説明します。また、アップロードされるファイルの最大長は、php.ini で設定されます。実際のアップロードに影響を与える可能性があります。実際の状況に応じて変更してください。また、PHP アップロードは、最初に一時ディレクトリにアップロードされ、その後、指定されたディレクトリに移動されます。一時ディレクトリは、必要に応じて変更することも、デフォルト値を変更することもできます。


次はフォーム送信のchange.phpファイルのコードです。このファイルの内容を見てみましょう:

<?php
header("content-type:text/html;charset=utf-8");
 
  
 
/**
* @param string $oldfile 需要更换的文件名(包含具体路径名)
*/
function changeFile($oldfile){
$newfile = $_FILES[&#39;file&#39;][&#39;name&#39;];//获取上传文件名
$fileclass = substr(strrchr($newfile, &#39;.&#39;), 1);//获取上传文件扩展名,做判断用
$type = array("jpg", "gif", "bmp", "jpeg", "png");//设置允许上传文件的类型
if(in_array(strtolower($fileclass), $type)){
if(file_exists($oldfile)){
unlink($oldfile);
}
 
if(is_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;])){//必须通过 PHP 的 HTTP POST 上传机制所上传的 
if(move_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;], $oldfile)){ 
//输出图片预览
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src=&#39;$oldfile&#39;></center>";
}
}else{
echo "<center>上传失败,文件大于2M,请重新上传!</center>";
}
}else{
$text = implode(",", $type);
echo "<center>您只能上传以下类型文件:", $text, "</center><br>";
// echo "<script>alert(&#39;您只能上传以下类型文件:$text&#39;)</script>";
}
}
 
changeFile("./files/1.png");

初めて読むときは少しめまいがするかもしれません。これら~~、ゆっくり見てみると、これが実はとても簡単であることがわかります!!

まず話しましょう 次の原則に基づいて、このプログラムは写真のアップロードを例にとります。ファイルの種類が画像形式かどうか。画像形式の場合は、ファイルをアップロードし、指定されたファイルにファイルをアップロードして置き換えます。アップロードが成功すると、アップロードされた画像のプレビューが出力されます。プログラム内のいくつかの関数は次のとおりです。

まずは見てみましょう

substr(strrchr($newfile, &#39;.&#39;), 1)

strrchar()

関数とは何ですか?画像ファイル pic などの例を示します。 jpg. strrchr(pic.jpg,'.') を処理するために strrchar() を使用すると、.jpg が返されます。わかりますか? この関数は、指定された文字の最後の位置の後の文字を返しますsubstr() を使用すると、jpg を取得できるため、ファイルのサフィックス名を取得して、アップロードされたファイルが指定された形式に準拠しているかどうかを判断できます。このプログラムは、指定された形式を配列に入れます。
次に、関数を呼び出してファイルの種類を決定し、小文字に変換します

strto lower($_FILES['file']['name' ])

, ここに非常に重要なもの $_FILES があります。これは、処理する必要があるフォーム データを保存するスーパー グローバル配列です。register_globals がオンになっている場合は、それにアクセスすることもできます直接入力しますが、これは安全ではありません。今のものを見てください。インターフェイス fa68a6172e90ddc4102f2ff67a357dc2 をアップロードすると、このフォーム名に従って、多くの情報を取得できます。 :

    $_FILES['file']['name'] -- ファイル名を取得します
  • $_FILES['file'] ['tmp_name']--一時的な保存場所を取得します
  • $_FILES['file']['size']--ファイル サイズを取得します
  • #$_FILES['file']['type']--get ファイルの MIME タイプ
  • この情報があれば、ファイルの情報を簡単に判断できます。とても便利? ^_^、次に理解する必要がある関数がいくつかあります、

file_exists() -- 指定されたディレクトリが存在するかどうかを確認します。存在しない場合は、もちろんアップロードできませんit
  • is_uploaded_file--ファイルが HTTP POST 経由でアップロードされたかどうかを確認します
  • #move_uploaded_file--アップロードされたファイルを指定されたディレクトリに移動します
  • #アップロードに成功すると、プレビューが出力されます。そうでない場合、出力アップロードは失敗します

  • ##関連学習の推奨事項:
PHP プログラミングの入門から熟練度まで

以上がPHP で画像をアップロードして置換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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