ホームページ >バックエンド開発 >PHPチュートリアル >PHPアップロード関数サンプルコード_PHPチュートリアル

PHPアップロード関数サンプルコード_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:39:24958ブラウズ

1. フォームupload.htmlをアップロードします

コードをコピーします コードは次のとおりです:





1.
というタグに注意してください。ファイルの場合は、multipart/form-data として指定する必要があります。そうしないと、サーバーは何をすべきかを認識できません。
2. ファイル Upload.html のフォーム オプション MAX_FILE_SIZE の非表示の値フィールドは、その値を設定することでアップロードされるファイルのサイズを制限できることに注意してください。
3. MAX_FILE_SIZE の値はブラウザーに対する単なる提案です。実際には、これは簡単に回避できます。したがって、ブラウザの制限を制限するためにこの値に依存しないでください。実際、PHP 設定の最大アップロード ファイル サイズは無効になりません。ただし、フォームに MAX_FILE_SIZE を含めたほうがよいでしょう。これにより、ユーザーは、大きなファイルがアップロードされるのを待ってから、そのファイルが大きすぎることに気づくまで時間を費やす手間が省けます。


PHP のファイルアップロードに関連するパラメータ



コードをコピーします
コードは次のとおりです: $f=&$HTTP_POST_FILES['Myfile'];
$dest_dir='uploads';/ /設定アップロードディレクトリ
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//重複を避けるために日付とファイル名を加えたファイル名を設定します
$ r=move_uploaded_file ($f['tmp_name'],$dest);
chmod($dest, 0755);//アップロードされたファイルの属性を設定します


or
=============================== ===== ==================================== $_FILES 配列の内容上記の例は次のとおりです。ファイルアップロードフィールドの名前は userfile であると仮定します (名前は任意に付けることができます)



コードをコピーします
コードは次のとおりです: $_FILES['userfile']['name']クライアント マシン ファイルの元の名前。
$_FILES['userfile']['type'] ファイルの MIME タイプ。ブラウザがこの情報 (「image/gif」など) をサポートする必要があります。
$_FILES['userfile']['size'] アップロードされたファイルのサイズ (バイト単位)。
$_FILES['userfile']['tmp_name'] ファイルのアップロード後にサーバーに保存される一時ファイル名。
$_FILES['userfile']['error'] ファイルのアップロードに関連するエラー コード


値: 0; エラーは発生せず、ファイルのアップロードは成功しました。
値: 1; アップロードされたファイルは、php.ini の Upload_max_filesize オプションで制限された値を超えています。
値: 2; アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。
値: 3; ファイルの一部のみがアップロードされました。
値: 4; ファイルはアップロードされませんでした。

PHP のデフォルトのアップロード制限は最大 2M です。この設定を超えるファイルをアップロードする場合は、PHP や Apache などのいくつかのパラメーターを調整する必要があります。以下では、PHP ファイルのアップロードに関連するいくつかのパラメーターを簡単に紹介します。 file_uploads
HTTP 経由でファイルをアップロードできるようにするスイッチ。

upload_tmp_dir
upload_tmp_dir は、PHP によってアップロードされたファイルが配置される一時ディレクトリを記述するために使用されます。サーバーは一時ファイルを閉じておらず、フォルダーに書き込んでいます。 権限が指定されていない場合、PHP はシステムのデフォルト値を使用します

upload_max_filesize
アップロードできる最大ファイルサイズ、デフォルトは 2M です



コードをコピーします

コードは次のとおりです:

define('MUILTI_FILE_UPLOAD', '10'); //同時に最大 10 個のファイルをアップロードできます
define('MAX_SIZE_FILE_UPLOAD', '500000' ) // ファイル サイズは超えません5MB
define('FILE_UPLOAD_DIR ', 'd:/'); //ファイルをアップロードするディレクトリ
//アップロードできるファイル名
$array_extention_interdite = array( '.php' , '.php3' , '.php4' , '.exe' , ' .msi' , '.htaccess' , '.gz' ); //アップロードしたファイルの拡張子

//情報を表示するためのパブリック関数
function func_message($message='', $ok=) ''){
echo '';
if($ok == true){
echo '< td width="100"> ;
}
if($ok == false){
echo '';
}
echo '
'.$message.'
$message.'< /td>
'
}
//フォーム送信の処理
$action = (isset($_POST['action'] )) ? $_POST['アクション'] :'' ;
$file = (isset($_POST['file'])) ? $_POST['file'] :'' ; ') {
$file = $file.'/';
}
$message_true = '';

switch($action){
case 'アップロード' :
chmod(FILE_UPLOAD_DIR,0777) );
for($ nb = 1 ; $nb <= MUILTI_FILE_UPLOAD ; $nb ++ ){
if( $_FILES['file_'.$nb]['size'] >= 10 ){
if ( $_FILES['file_' .$nb]['size'] <= MAX_SIZE_FILE_UPLOAD ){
if (!in_array(ereg_replace('^[[:alnum:]]([-_.]?[[:alnum: ]])*.' ,'.', $_FILES['file_'.$nb]['name'] ) , $array_extention_interdite) ){
if($_POST['file_name_'.$nb] !='' ){
$file_name_final = $_POST['file_name_'.$nb].$extension ;
}else {
$file_name_final = $_FILES['file_'.$nb]['name']
} ;ファイル名
$file_name_final = strtr($file_name_final, 'aaaaaa', 'AAAAAAACEEEEIIIIOOOOOUUUYaaaaaaceeeeeiiioooooouuuyy');
$file_name_final = preg_replace('/([^.a-z0-1]+)/i', '_', $ file_name_final );

$_FILES['file_'.$nb]['name'] = $file_name_final;
move_uploaded_file( $_FILES['file_'.$nb]['tmp_name'] , FILE_UPLOAD_ DIR . $file . $file_name_final );

$message_true .= 'ファイルがアップロードされました: '.$_FILES['file_'.$nb]['name'] .'
'
}else{
$message_false .= 'ファイルアップロードに失敗しました: '. $_FILES['file_'.$nb]['name'] .'
'
}
}else{
$message_false .= 'ファイル サイズ '.MAX_SIZE_FILE_UPLOAD/1000 ' KB : " '. $_FILES['file_'.$nb]['tmp_name'].'"
';}
}
}//end for
}
?> html>
<br>.border{background-color:#000000} <br>.text { color:# 000000; <br>font-family: 宋体; <br>font-weight:bold} <br>input, select{font-size: 12px;} <br>margin-top: 8px; } <br>< /style> <br><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> <br><body marginwidth="0"bottommargin=" 0" leftmargin= "0" rightmargin="0"> <br><form name="form" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF '] ; >"> <br><input type="hidden" name="action" value="upload"> <br><table border="0" cellpacing="1" cellpadding="0" 整列="center" class="border"> <br><td> <br>if($message_true != '') { func_message($message_true, true); message_false != ' '){ func_message($message_false, false) } <br>?> <br><table width="100%" border="0" cellpadding="2" align="center" class="box "> <br><?php <BR>for($nb <= MUILTI_FILE_UPLOAD; $nb ++ ){ <BR><tr class="text"> ;td>ファイルのアップロード: <?php echo $nb; ?></td><input type="file" name="file_<?php echo $nb; ?>" ;</ td> <br><td>新しいファイル名 (拡張子を含む): <?php echo $nb; ?> </td><td><input type="text" name="ファイル名_<? php echo $nb; ?>"</td> <br></tr> <br><?php }?> <BR><tr> <br><tdcolspan="2" align="right" class="text">上传目的地址:<?php echo FILE_UPLOAD_DIR ;?> <br><名前="ファイル" を選択> <br><option value=""></option> <br><?php <BR>$repertoire = opendir(FILE_UPLOAD_DIR); <BR>while( $file = readdir($repertoire) ) { <BR>$file = str_replace('.','',$file); <BR>if( is_dir($file)) { <BR>?> <br><option value="<?php echo $file; ?>"> <?php echo $file; ?>/</オプション> <BR><?php <BR>} <BR>} <BR>closedir($repertoire); <BR>?> <BR></選択> <br></td> <br><tdcolspan="2" align="right"><input type="submit" value="可同時上传<?php echo $nb-1; ?> 个文件 ">< /td> <br></tr> <br></表> <br></td> <br></tr> <br></表> <br></フォーム> <br></body> <br></html> <br> </div> <p align="left"></p> <div style="display:none;"> <span id="url" itemprop="url">http://www.bkjia.com/PHPjc/321547.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">tru​​e</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/321547.html</span><span id="genre" itemprop="genre">技術記事</span><span id="description" itemprop="description"> 1. 上传表单 Upload.html 复制代頁 代頁如下: form enctype="multipart/form-data" action="upload.php" method="post" input type="hidden" name="max_file_size" value="100000"私は...</span> </div> <div class="art_confoot"></div></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 コードを作成し、PHP_PHP チュートリアルを使用して独自のブログ システムを作成する" href="https://m.php.cn/ja/faq/309991.html">データベース PHP コードを作成し、PHP_PHP チュートリアルを使用して独自のブログ システムを作成する</a></span><span>次の記事:<a class="dBlack" title="データベース PHP コードを作成し、PHP_PHP チュートリアルを使用して独自のブログ システムを作成する" href="https://m.php.cn/ja/faq/309993.html">データベース PHP コードを作成し、PHP_PHP チュートリアルを使用して独自のブログ システムを作成する</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://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="https://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="https://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="https://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="https://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><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><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>