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

PHPファイルのアップロード
まず、我々は必要なPHPのアップロードの設定項目を理解する必要があります

php.iniで初カザフスタン次のパラメータは、最初のアップロードファイルを完了するためにチェックする必要があり
、オープン状態で= file_uploadsを確保するために
= upload_tmp_dir一時ファイルのディレクトリを設定する必要があり
、単一の最大アップロードファイルサイズのupload_max_filesizeで
、現在少なくともpost_max_sizeののファイルサイズをアップロードすることができpost_max_sizeのポストをupload_max_filesizeでは、より大きな
一括アップロードファイル番号の許可max_file_upload
確認は、我々は新しいフォームを作成することができます

<HTML LANG = "EN">
<HEAD>
<METAのcharset = "UTF-8">
<メタ名= "ビューポート"コンテンツ= "幅=デバイス幅、初期スケール= 1.0">
<タイトル>ドキュメント</タイトル>
</ HEAD>
<BODY>
<フォームアクション= "demo1.php"メソッドは= "POST"にenctype = "multipart / form-データ">
<INPUTタイプ= "ファイル"名= 'xy_file'>
<ボタン>送信</ボタン>
</ FORM>
</ BODY>
</ HTML>
にenctype =「multipart / form-データ
ドゥこれまでそうしないと、ハンマーをアップロードし、このフォームを書くことを忘れないで。
私たちは、PHPファイルを見て前に、グローバル$ _FILES

得られたデータは元のファイル名、ファイル拡張子、一時ディレクトリ、エラーコード、ファイルサイズでした。
エラー・コード値

UPLOAD_ERR_OK

その値が0で、エラーが発生しなかった、ファイルが正常にアップロード。
UPLOAD_ERR_INI_SIZE
1の値を、アップロードされたファイルは、限界値php.iniのupload_max_filesizeでアイテムを超えます。
UPLOAD_ERR_FORM_SIZEの
2の値は、アップロードファイルのサイズが指定されたHTMLフォームのMAX_FILE_SIZEオプションの値を超えています。
UPLOAD_ERR_PARTIAL
3で、ファイルが部分的にしかアップロードされました。
UPLOAD_ERR_NO_FILE
その値は何のファイルがアップロードされていない、4です。
UPLOAD_ERR_NO_TMP_DIR
一時フォルダが見つからない、その値は6です。PHP 4.3.10とPHP 5.0.3を導入しました。
UPLOAD_ERR_CANT_WRITE
その値は7、ファイル書き込みの失敗です。PHP 5.1.0で導入されました。

第8章の名前空間、
使用例外;
/ **
*?1.ファイルが正常にアップロードするかどうか
?* 2.一時ファイル法定かどうかを判断する
* 3.移動し、一時ファイル、ユーザーディレクトリへの
* /
/ **
* UPLOAD_ERR_OK
0の値*エラーが発生しなかった、ファイルが正常にアップロード。
UPLOAD_ERR_INI_SIZE *
* 1の値は、アップロードされたファイルは、の値を制限するphp.iniのオプションのupload_max_filesizeを超えています。
* UPLOAD_ERR_FORM_SIZEの
2 *であるサイズ、アップロードファイルには、オプションの値がMAX_FILE_SIZE HTMLフォームを指定超えています。
UPLOAD_ERR_PARTIAL *
3である*、ファイルが部分的にしかアップロードされました。
UPLOAD_ERR_NO_FILE *
*値4は、どのファイルがアップロードされていません。
UPLOAD_ERR_NO_TMP_DIR *
*値6、一時フォルダがありません。PHP 4.3.10とPHP 5.0.3を導入しました。
UPLOAD_ERR_CANT_WRITE *
*値7、ファイルの書き込みに失敗しました。PHP 5.1.0で導入されました。
* /
のtry {
//取得エラーコード
$エラーコード= $ _FILES [ 'xy_file '] [ 'エラー'];
IF($のErrorCode> UPLOAD_ERR_OK){
スイッチ($のErrorCode){
ケースUPLOAD_ERR_INI_SIZE:
スロー新しい新しい例外( 'ファイルが定義超え');
BREAK;
ケースUPLOAD_ERR_FORM_SIZE:
スロー新しい新しい例外( '形式でファイルサイズを超えた');
BREAK ;
ケースUPLOAD_ERR_PARTIAL:
スロー新しい新しい例外(「不完全なファイルアップロード」);
BREAK;
ケースUPLOAD_ERR_NO_FILE:
スロー新しい新しい例外(「ファイルのアップロードが空である」);
BREAK;
ケースUPLOAD_ERR_NO_TMP_DIR:
スロー新しい新しい例外(「フォルダを見つけるためノーテンポラリファイル」) ;
BREAK;
ケースUPLOAD_ERR_CANT_WRITE:
スロー新しい新しい例外( 'ノー書き込み許可ファイル');
BREAK;
}
}
//か否かを判断する有効な一時ファイル
$ファイル= $ _FILES [ 'xy_file '] [ 'tmp_name'];
//設定は、アップロード形式を許可します
filelx = $ [ 'PDF'];
// is_uploaded_file -ファイルをHTTP POSTを介してアップロードされているかどうかを判断するための
IF(trueにis_uploaded_file($ファイル)===){
//それは、ファイルの拡張子を取得を開始する必要があります
$ filehz =パス情報($ _FILES [ 'xy_file'] [ '名前'])[ '拡張'];
IF(in_array(filehzの$、$ filelxは)){
//ファイル名の重複を防止すること
; DIR = 'アップロード' $を
(IF(is_dirを! DIR)){$
、MKDIR($ DIR)
のchmod($ DIR、0777);
// MKDIR($ DIR、0777、trueにする);
}
... $ destname = $ DIR DIRECTORY_SEPARATOR MD5($ _ FILES [ 'xy_file'] [ '名'])時間()$ filehz ;.。 ''。
IF(move_uploaded_file(ファイル$、$ destname)){
エコー「<スクリプト>アラート( "成功したアップロード"); LOCATION.HREF =「form1.html 「; </ SCRIPT>「;
}
}他{
エコー「アップロードファイル形式が許可されていません」;
}
} {他の
「不正な処理を」エコー;
}
}キャッチ(例外$ E){
エコー$ E->のgetMessage();
}
単一ファイルのアップロードのための真実を伝えることは非常に簡単で、単に取得し、アップロードファイル名と拡張子である、と許可します比較する接尾辞リスト、比較が成功した後、move_uploaded_fileで行われ、なぜそれが時間べきで、指定したディレクトリに転送?これは、重複するファイル名を防ぐためです。
我々はPNG画像をアップロード見て良いです

次に、我々は、アップロード時にPDFを見ます


PHPファイルのアップロード
複数ファイルのアップロード原理は、当社のアップロードフォームの数を書くことは非常に簡単です
、我々は、配列のアップロードに書かれた名前が付けられます一般的にはもちろん、

配列になりますアップロードされ、この複数のファイルのように我々
このようなファイルは、我々は形式に必要な彼と一緒に多くの問題だろう!

第8章の名前空間;
使用例外;
//片手で複数のファイルをアップロードします。
ファイルの合計サイズが必要とされるよりも//を大きくすることができない、10M
// post_max_sizeの値<=に10M
$ IMG = [];
//のvar_dump($ _ FILES);
foreachの(AS $ $ _FILES値){
IF(IS_ARRAY($値[ 'エラー'])){
($ I = 0; $ I <COUNT($値['エラー']); $ I ++){
$ IMG [] = [
'名前'=> $値['名前「] [ $ I]、
'タイプ' => $値[ '型'] [$ I]、
'tmp_name' => $値[ 'tmp_name'] [$ I]、
'エラー' => $値[ 'エラー'] [$ I]、
'サイズ' => $値[ 'サイズ'] [$ I]
];
}
}
}
//のvar_dump($ IMG)。




$のErrorCode = $ imgvalue [ 'エラー'];
IF($のErrorCode> UPLOAD_ERR_OK){
スイッチ($のErrorCode){
ケースUPLOAD_ERR_INI_SIZE:
スロー新しい新しい例外( 'ファイルが定義超え');
BREAK;
ケースUPLOAD_ERR_FORM_SIZE:
スロー新しい新しい例外( 'ファイルを設定すると、フォームのサイズ「;)を超える
; BREAK
:ケースUPLOAD_ERR_PARTIAL
ファイルアップロード不完全」);スロー新しい新しい例外(「
BREAK;
ケースUPLOAD_ERR_NO_FILE:
スロー新しい新しい例外(」ファイルのアップロードが空である「);
BREAK;
ケースUPLOAD_ERR_NO_TMP_DIR:
スローを新しい例外(「が見つかりませんテンポラリフォルダ」);
BREAK;
ケースUPLOAD_ERR_CANT_WRITE:
スロー新しい例外(「ファイルに対する書き込み権限」);
BREAK;
}
}
//有効な一時ファイルかどうかを決定する
$ファイル= $ imgvalue [ 'tmp_name '];
//セットフォーマットは、アップロードできます
$ filelx = [ 'PDF'、 'JPG'、 'PNG'、 'JFIF'];
is_uploaded_file用//エントリ-ファイルをHTTP POSTを介してアップロードされているかどうかを判断する
(is_uploaded_file($ファイル)場合==真=へ){
//ファイルの拡張子を開始する必要があります
$のfilehzにパス情報=($ imgvalue [ '名前'])[ '拡張子を'];
IF(in_array(filehz $、$ filelx)){
//ファイル防ぐためにリピート名
$ = DIR 'アップロード';
IF {(is_dir(DIR $)!)
ます。mkdir($ DIR);
chmodの($ DIR、0777);
//ます。mkdir($ DIR、0777、真の);
}
$ = $ destname .. DIR DIRECTORY_SEPARATOR MD5($ imgvalue [ '名前'])時間()$ filehz .. '' ;.
IF(move_uploaded_file($ファイル、$ destname)){
エコー「<スクリプト>アラート( "成功したアップロード") ; LOCATION.HREF = "form1.html"; < / SCRIPT>「;
}
}他{
エコー「アップロードファイル形式は、「許可されていません。
}
} {他に
"不正な操作"エコー;
}
}キャッチ(例外の$ E){
エコー$ E->のgetMessage();
}
}
完璧をアップロードすることが可能である。この方法!
機能にカプセル化する方法は?

第8章の名前空間、
使用例外;
機能のアップロード(ファイル$){
試み{
//取得エラーコード
$ファイルのErrorCode = $ [ 'エラー'];
IF($のErrorCode> UPLOAD_ERR_OK){
スイッチ($のErrorCode){
ケースUPLOAD_ERR_INI_SIZE:
スロー新新例外(「ファイルが定義超え」);
BREAK;
ケースUPLOAD_ERR_FORM_SIZE:
スロー新しい新しい例外(「ファイルを設定すると、フォームのサイズを超えた」);
BREAK;
ケースUPLOAD_ERR_PARTIAL:
スロー新しい新しい例外(「不完全なファイルアップロード」);
BREAK;
ケースUPLOAD_ERR_NO_FILE:
スロー新しい新しい例外(「ファイルのアップロードが空である」);
BREAK;
ケースUPLOAD_ERR_NO_TMP_DIR:
スロー新しい新しい例外(「一時フォルダが見つかりません」);
BREAK;
ケースUPLOAD_ERR_CANT_WRITE:
新しい例外をスローする( 'いいえ書き込み許可ファイル');
; BREAK
}
}
有効な一時ファイルかどうかを決定する//
$ファイルfileNは$ [ 'tmp_name']を=;
アップロードできるようにする//セット形式
$ filelx = [ 'PDF'、 'JPG'、 'PNG'];
// is_uploaded_file -ファイルがアップロードされているかどうかを決定するためにHTTP POST経由
のiF(trueにis_uploaded_file($ fileN)===){
//それは、ファイルの拡張子を取得を開始する必要があります
$ filehz =パス情報(ファイル$ [ '名前'])[ '拡張'];
IF(in_array(filehzの$、$ filelx)){
//ファイル名の重複が防止
DIR $を= 'アップロード';
IF(!is_dir($ DIR)){
MKDIR($ DIR);
chmodの($ DIR、0777)は、
//ます。mkdir($ DIR、0777、真の);
}
... $ $ DIRのDIRECTORY_SEPARATOR destname = MD5(ファイル$ [ '名前'])時間()。 ''。$のfilehz。
もし(move_uploaded_file($ filen、$ destname)){
エコー'<スクリプト>警告( "成功したアップロード"); LOCATION.HREF = "form1.html"; </ SCRIPT>';
}
}他{
エコー"アップロードファイル形式は許可されていません";
}
}他{
エコー「不正な操作「;
}
}キャッチ(例外$ E){
エコー$ E->のgetMessage();
}
}
この方法は、一般的な機能にパッケージ化することができます!

おすすめ

転載: www.cnblogs.com/benbenhan/p/12518371.html