ホームページ  >  記事  >  バックエンド開発  >  PHPに画像ファイルをアップロードして置き換える方法

PHPに画像ファイルをアップロードして置き換える方法

WBOY
WBOYオリジナル
2016-06-23 13:14:361159ブラウズ

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

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



変更ファイルの例.< /title><br> <meta charset="UTF-8"><br></head><br><body><br> <form method="post" action="changefile.php" enctype="multipart /form-data"><br> <table border=0 cellpacing=0 cellpadding=0 align=center width="100%"><br> <tr><br> <td width=55 height=20 align="center "> <br> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /><br> ファイル: <br> </td><br> <td><br> <input name="file" type= "ファイル" /><br /> <input type="submit" name="submit" value="submit" /> <br /> </td><br /> </tr><br /> </table><br> </ form><br> </body><br></html></p> <p>ここで注意すべき点がいくつかあります。まず、この文を見てください。<form method="post" action="change.php" enctype=" multipart/form-data" > ここでは POST メソッドを使用します。ブラウザによっては PUT メソッドもサポートしています。もちろん、これにはスクリプトの変更が必要ですが、これはお勧めしません。アップロードされたファイルに通常のフォーム情報が含まれていることをサーバーが認識できるように、Enctype="multipart/form-data をフォームに設定する必要があります。これを設定する必要があることを覚えておいてください。また、最大長を制限するには隠しフィールドが必要です。アップロードされたファイル: < ;input type="hidden" name="MAX_FILE_SIZE" value="2000000">、ここで name は MAX_FILE_SIZE に設定する必要があり、その値はアップロードされたファイルの最大長で、単位は B、ここでは 2M に制限します。 :<input name="file" type="file" value="browse" >, type="file" はファイルの種類を示します。これで、基本的なファイルアップロードインターフェイスが完成します。次に、PHP を使用してアップロードされたファイルを処理する方法について説明します。また、php.ini に設定されているアップロード ファイルの最大長は、実際のアップロードに影響を与える可能性があります。最初に一時ディレクトリにアップロードされてから、指定されたディレクトリに移動されます。はい、はい。一時ディレクトリは必要に応じて変更することも、デフォルト値を使用することもできます... </p> <p>以下はフォーム送信のchange.phpファイルです。コードです。このファイルの内容を見てみましょう: </p> <p><?php<br />header(" content-type:text/html;charset=utf-8");</p> <p> </p> <p> /**<br /> * @param string $oldfile 置換する必要があるファイル名 (特定のパス名を含む) <br />*/<br /> function changeFile ($oldfile){<br /> $newfile = $_FILES['file']['name '];//アップロードされたファイルの名前を取得します<br /> $fileclass = substr(strrchr($newfile, '.'), 1); //アップロードされたファイルの拡張子を取得して判定に使用します<br /> $type = array("jpg", " gif", "bmp", "jpeg", "png");//アップロードできるファイルの種類を設定しますアップロードされる<br /> if(in_array(strto lower($fileclass), $type)){<br /> if(file_exists($oldfile)){ <br /> unlink($oldfile);<br /> }</p> <p> if(is_uploaded_file($_FILES['file'] ['tmp_name'])){//PHP の HTTP POST アップロード メカニズムを通じてアップロードする必要があります<br /> if(move_uploaded_file($_FILES ['file']['tmp_name'], $oldfile)){ <br /> //出力画像プレビュー<br /> echo "<center>ファイルがアップロードされました。画像プレビューをアップロード: </center><br><center><img src='$oldfile'></center>";<br> }<br> } else{<br> echo "<center>アップロードに失敗しました。ファイルは 2M を超えています。もう一度アップロードしてください。 </center>";<br> }<br> }else{<br> $text = implode(",", $type);<br> echo "<center>次の種類のファイルのみをアップロードできます:", $text, " < /center><br>";<br> // echo "<script>alert('次の種類のファイルのみアップロードできます: $text')</script>";<br> }<br> }</p> <p> ChangeFile("./files/1.png");</p> <p>初めて読むときは少しめまいがするかもしれません~~ でも、ゆっくり見てみると、これが実際にはとても簡単であることがわかります! !まず原理について説明します。このプログラムは、ファイルの種類が画像形式であるかどうかを判断し、指定されたファイルを置き換えます。アップロードが成功すると、アップロードされた画像のプレビューが出力されます。ここでは、プログラム内のいくつかの関数について説明します。まず、substr(strrchr($newfile, '.'), 1) を見てみましょう。strrchar() 関数の役割は何ですか? たとえば、画像ファイル pic.jpg について説明します。 strrchr(pic.jpg,'.') を使用して処理すると、.jpg が返されます。この関数は、この <strong>string</strong> が最後に出現した後に、指定された文字を含む文字列を返します。 substr() を使用すると、jpg を取得できるため、ファイル拡張子を取得して、アップロードされたファイルが指定された形式に準拠しているかどうかを判断できます。このプログラムは、指定された形式を配列に配置し、実際の使用中に必要に応じて追加できます。 <br>次に、関数を呼び出してファイルの種類を決定し、それを小文字の strto lower($_FILES['file']['name']) に変換します。ここには非常に重要な点があります。これはスーパー グローバル配列です。 register_globals がオンになっている場合は、処理する必要のあるフォーム データが保存されますが、これは安全ではありません。今アップロード インターフェースを見てください <input name="file" type="file"> このフォーム名に基づいて、多くの情報を取得できます: <br>$_FILES['file']['name'] -- ファイル名を取得します<br>$_FILES['file']['tmp_name']--一時保存場所を取得します<br>$_FILES['file']['size']--ファイルサイズを取得します<br>$_FILES[' file']['type'] --ファイルのMIMEタイプを取得します<br>この情報があれば、ファイルの情報を簡単に判断することができてとても便利ですよね。 ^_^、次に理解する必要がある関数がいくつかあります。file_exists() -- 指定されたディレクトリが存在するかどうかを確認します。存在しない場合は、もちろんアップロードできません (ナンセンスのようです!)、is_uploaded_file --。ファイルが HTTP POST 経由でアップロードされたかどうかを確認します。 move_uploaded_file -- アップロードされたファイルを指定されたディレクトリに移動します。アップロードが成功した場合はプレビューが出力され、そうでない場合は出力アップロードは失敗します...</p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="PHP リフレクション メカニズムは、プラグインのプラグイン可能な設計を実装します。" href="http://m.php.cn/ja/faq/251768.html">PHP リフレクション メカニズムは、プラグインのプラグイン可能な設計を実装します。</a></span><span>次の記事:<a class="dBlack" title="PHP リフレクション メカニズムは、プラグインのプラグイン可能な設計を実装します。" href="http://m.php.cn/ja/faq/251773.html">PHP リフレクション メカニズムは、プラグインのプラグイン可能な設計を実装します。</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><div class="nphpFoot"><div class="nphpFootBg"><ul class="nphpFootMenu"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><p>ホームページ</p></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><p>コース</p></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><p>に質問</p></a></li><li><a href="http://m.php.cn/ja/login"><b class="icon5"></b><p>私の</p></a></li><div class="clear"></div></ul></div></div><div class="nphpYouBox" style="display: none;"><div class="nphpYouBg"><div class="nphpYouTitle"><span onclick="$('.nphpYouBox').hide()"></span><a href="http://m.php.cn/ja/"></a><div class="clear"></div></div><ul class="nphpYouList"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><span>ホームページ</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><span>コース</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/article.html"><b class="icon3"></b><span>記事</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><span>に質問</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/dic.html"><b class="icon6"></b><span>辞書</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course/type/99.html"><b class="icon7"></b><span>マニュアル</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/xiazai/"><b class="icon8"></b><span>ダウンロード</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/faq/zt" title="特集"><b class="icon12"></b><span>特集</span><div class="clear"></div></a></li><div class="clear"></div></ul></div></div><div class="nphpDing" style="display: none;"><div class="nphpDinglogo"><a href="http://m.php.cn/ja/"></a></div><div class="nphpNavIn1"><div class="swiper-container nphpNavSwiper1"><div class="swiper-wrapper"><div class="swiper-slide"><a href="http://m.php.cn/ja/" >ホームページ</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/article.html" class="hover">記事</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/wenda.html" >に質問</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/course.html" >コース</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/faq/zt" >特集</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/xiazai" >ダウンロード</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/game" >ゲーム</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/dic.html" >辞書</a></div><div class="clear"></div></div></div><div class="langadivs" ><a href="javascript:;" class="bg4 bglanguage"></a><div class="langadiv" ><a onclick="javascript:setlang('zh-cn');" class="language course-right-orders chooselan " href="javascript:;"><span>简体中文</span><span>(ZH-CN)</span></a><a onclick="javascript:setlang('en');" class="language course-right-orders chooselan " href="javascript:;"><span>English</span><span>(EN)</span></a><a onclick="javascript:setlang('zh-tw');" class="language course-right-orders chooselan " href="javascript:;"><span>繁体中文</span><span>(ZH-TW)</span></a><a onclick="javascript:;" class="language course-right-orders chooselan chooselanguage" href="javascript:;"><span>日本語</span><span>(JA)</span></a><a onclick="javascript:setlang('ko');" class="language course-right-orders chooselan " href="javascript:;"><span>한국어</span><span>(KO)</span></a><a onclick="javascript:setlang('ms');" class="language course-right-orders chooselan " href="javascript:;"><span>Melayu</span><span>(MS)</span></a><a onclick="javascript:setlang('fr');" class="language course-right-orders chooselan " href="javascript:;"><span>Français</span><span>(FR)</span></a><a onclick="javascript:setlang('de');" class="language course-right-orders chooselan " href="javascript:;"><span>Deutsch</span><span>(DE)</span></a></div></div><script> var swiper = new Swiper('.nphpNavSwiper1', { slidesPerView : 'auto', observer: true,//修改swiper自己或子元素时,自动初始化swiper observeParents: true,//修改swiper的父元素时,自动初始化swiper }); </script></div></div><!--顶部导航 end--><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>