PHP開(kāi)発基本チュートリアルファイルのアップロード
1. PHP ファイルのアップロード
私たちは日常的に次のような狀況によく遭遇します:
QQ スペースに寫真をアップロードする
WeChat Moments に寫真をアップロードする
メールデータをアップロードするメールに添付ファイル
認(rèn)証の際、寫真またはIDカードをアップロードする必要があります
また、ニーズを分析してさまざまなものをアップロードするためのさまざまな製品gou(ゴウ)もあります。
そして私たちは、Wang という製品によって提示されたニーズを?qū)g現(xiàn)する必要があります。
ファイルのアップロードの実裝は、PHP プログラマーに必要なスキルの 1 つです。
ファイルアップロードを?qū)Wぶことで、使用現(xiàn)象を通してファイルアップロードの本質(zhì)が見(jiàn)えてきます!
2. ファイルをアップロードするときは、php.ini ファイルに注意する必要があります
この章でアップロードについて正式に説明する前に、最初に行う必要があるのは、php.ini ファイルに注意を払うことです。 iniファイル。
php.ini ファイルの変更方法を初めて紹介します。設(shè)定項(xiàng)目が説明と矛盾している場(chǎng)合は、変更に注意してください。
各設(shè)定項(xiàng)目を理解しましょう。
php.iniを変更する方法を見(jiàn)てみましょう。
phpstudyでphp.ini設(shè)定ファイルを開(kāi)きます。
php.ini ファイルが多すぎて見(jiàn)つからない場(chǎng)合は、ctrl+f を使用して関連する構(gòu)成項(xiàng)目を検索できます。
推奨サイズ: file_size (ファイルサイズ)
このパラメータは、スクリプトの最大実行時(shí)間を設(shè)定します。
必要に応じて適切な変更を行うこともできます。通常は変更する必要はなく、システムのデフォルト値で十分です。非常に大きなファイルをアップロードする場(chǎng)合、このパラメータが変更される可能性があります。
3. ファイルアップロードのステップ
PHPをより良く學(xué)ぶために、非常に複雑なPHPファイルのアップロードを6つのステップにまとめました。 実際の使用では、次の 6 つの手順に従って PHP ファイルのアップロードを正常に完了できます:1. エラー コードがあるかどうかを確認(rèn)します
システムによって返されるエラー コードの詳細(xì)な説明:はありません
2.アップロード機(jī)能を開(kāi)発する際に、ファイルサイズが
の範(fàn)囲を超えるかどうかをカスタマイズします。開(kāi)発者として、php.ini で指定された最大アップロード値に加えて、
通常、企業(yè)が指定したアップロード サイズ制限である値も設(shè)定します。
例:
Sina Weibo または QQ Zone では、2M の単一のアバター寫真のみが許可されます。アルバムをアップロードする場(chǎng)合は、2M を超えてアップロードできます。
そのため、そのシステムはより大きなファイルのアップロードをサポートしています。
ここでの判定ファイルサイズは、実際の業(yè)務(wù)で指定したいアップロードファイルサイズを制限するために使用されます。
3. サフィックス名と MIME タイプが一致するかどうかを確認(rèn)します
オンラインの世界にも悪い人がいます。畫(huà)像にウイルスを挿入したり、添付ファイルにウイルスをアップロードしたり、Web ページにウイルスやポルノ畫(huà)像を挿入したりします。
アップロードされたファイルのサフィックスとMIMEタイプを判斷する必要があります。
MIME (MultiPurpose Internet Mail Extensions) は、多目的インターネット メール拡張機(jī)能のタイプです。特定の拡張子を持つファイルをアプリケーションで開(kāi)くように設(shè)定するメソッドの一種で、その拡張子のファイルにアクセスすると、ブラウザは指定されたアプリケーションを使用して自動(dòng)的にそのファイルを開(kāi)きます。これは主に、クライアント定義のファイル名とメディア ファイルを開(kāi)く方法を指定するために使用されます。
サフィックスと MIME タイプを決定するときは、2 つのパラメーターを渡す PHP 関數(shù) in_array() を使用します。
最初のパラメータは判定する値です。
2 番目のパラメータは範(fàn)囲配列です。
この関數(shù)を使用して、ファイル拡張子と MIME タイプが許可された範(fàn)囲內(nèi)であるかどうかを判斷します。
4. ファイル名の生成
ファイルは正常にアップロードされましたが、元の名前は保存されません。
元の名前にデリケートなキーワードが含まれている一部の人々は、我が國(guó)の関連法規(guī)制に違反する可能性があるためです。
date()、mt_rand()、または unique() を使用して、ランダムなファイル名を生成できます。
5. アップロードされたファイルかどうかを確認(rèn)します
ファイルが正常にアップロードされると、システムはアップロードされた一時(shí)ファイルをシステムの一時(shí)ディレクトリにアップロードします。一時(shí)ファイルを作成します。
同時(shí)に一時(shí)ファイル名も生成されます。必要なのは、一時(shí)ファイルをシステム上の指定されたディレクトリに移動(dòng)することです。
動(dòng)く前にやみくもに動(dòng)かない、あるいは間違った動(dòng)きをするのは非科學(xué)的です。移動(dòng)する前に、関連する関數(shù)を使用して、アップロードされたファイルが一時(shí)ファイルであるかどうかを判斷する必要があります。
is_uploaded_file() はパラメータ ($_FILES のキャッシュ ファイル名) を渡して、渡された名前がアップロードされたファイルかどうかを判斷します
6. 一時(shí)ファイルを指定された場(chǎng)所に移動(dòng)します
一時(shí)ファイルは実際のものです一時(shí)ファイルを Web サイトのディレクトリに移動(dòng)する必要があります。
當(dāng)社のウェブサイトディレクトリ內(nèi)のデータに他の人がアクセスできるようにします。
move_uploaded_file() を使用します。
この関數(shù)は、アップロードされたファイルを指定された場(chǎng)所に移動(dòng)し、名前を付けます。
2 つのパラメータを渡します:
最初のパラメータは、移動(dòng)を指定するアップロードされたファイルです。
2 番目のパラメータは、指定されたフォルダとその名前を連結(jié)した文字列です
4. ファイルアップロードフォームに関する注意事項(xiàng)
正式な學(xué)習(xí)を開(kāi)始し、ファイルをアップロードする方法を?qū)Wびます。ファイルをアップロードするには、Webページ上にフォームを用意する必要があります。
これは単純な HTML ページ フォームです。このフォーム フォームは、type=file を入力すると、デフォルトでファイル コンテンツがアップロードされます。
フォームのコードと注意點(diǎn)を見(jiàn)てみましょう
<html> <head> <meta charset="utf-8" /> <title>單文件上傳</title> </head> <body> <form action="file.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上傳"> </form> </body> </html>
注:
フォームform內(nèi)のパラメータメソッドはpostである必要があります。 get の場(chǎng)合、ファイルのアップロードは実行できません。 enctype は multipart/form-data である必要があります。
フォームによって送信されたファイルの內(nèi)容は file.php を指しています。 アップロードされたファイルは、file.php の PHP コードを通じて処理されます。 アップロードする名前の付いた寫真を選択します。畫(huà)像の名前がhua.jpgであると仮定します。クリックしてアップロードします。
PHP はファイルデータ専用のシステム関數(shù) $_FILES を用意しており、アップロードされたファイルの関連データはすべてこのシステム関數(shù)に保存されます。
PHP ファイルで $_FILES を出力して、この配列の構(gòu)造を確認(rèn)します。
<?php //var_dump()或print_r() //打印變量的相關(guān)信息,將變量的信息詳細(xì)的展示出來(lái) var_dump($_FILES); ?>出力された結(jié)果の配列構(gòu)造は次のとおりです:
上記の配列構(gòu)造が得られます。 ファイル処理プロセスを開(kāi)始できます。
2. エラー コードを決定します
<?php if($_FILES['file']['error'] > 0){ switch ($_FILES['file']['error']) { //錯(cuò)誤碼不為0,即文件上傳過(guò)程中出現(xiàn)了錯(cuò)誤 case '1': echo '文件過(guò)大'; break; case '2': echo '文件超出指定大小'; break; case '3': echo '只有部分文件被上傳'; break; case '4': echo '文件沒(méi)有被上傳'; break; case '6': echo '找不到指定文件夾'; break; case '7': echo '文件寫入失敗'; break; default: echo "上傳出錯(cuò)<br/>"; } }else{ //錯(cuò)誤碼為0,即上傳成功,可以進(jìn)行后續(xù)處理,處理流程見(jiàn)下文 } ?>上記のコードは、エラー コードとそれに対応するエラーを詳細(xì)に示しています。
3. ファイルがサイズを超えているかどうかを確認(rèn)します
実際のプロジェクトでは、システムのハードウェア制限とストレージデバイスの制限により、ユーザーが無(wú)制限にファイルをアップロードすることは不可能であるため、ファイルのサイズを確認(rèn)する必要がありますユーザーによるアップロードの制限。適切な制限サイズを定義すると、アプリケーションをより安定して実行できます。//判斷錯(cuò)誤 if($_FILES['file']['error'] > 0){ //有錯(cuò)誤可停止執(zhí)行 }else{ //當(dāng)前上傳文件無(wú)誤,運(yùn)行本段代碼 //判斷文件是否超出了指定的大小 //單位為byte $MAX_FILE_SIZE = 100000; if($_FILES['file']['size'] > $MAX_FILE_SIZE){ //判斷,如果上傳的文件,大小超出了我們給的限制范圍,退上傳并產(chǎn)生錯(cuò)誤提示 exit("文件超出指定大小"); }

4. ファイルの MIME タイプが正しいかどうかを確認(rèn)します
オンライン アプリケーションの場(chǎng)合、ファイル アップロード機(jī)能は、ユーザーがアップロードしたファイルが要件を満たしているかどうかを確認(rèn)する必要があることがよくあります。効果が悪影響を及ぼします。したがって、MIME タイプとサフィックス名を使用して、ユーザーがアップロードしたファイルが要件を満たしているかどうかを判斷する必要があります。
以下のサンプルコードでは、現(xiàn)在のプロジェクト要件がアップロードされた畫(huà)像を指定し、サフィックスが GIF または jpg のファイルのアップロードを要求していると想定しています。ユーザーが要件を満たさないファイルをアップロードすると、次のようなエラー メッセージが表示されます。戻ってきた。/*判斷后綴名和MIME類型是否符合指定需求 例如: 當(dāng)前項(xiàng)目指定上傳后綴為.jpg或.gif的圖片,則$allowSuffix = array('jpg','gif'); */ //定義允許的后綴名數(shù)組 $myImg = explode('.', $_FILES['file']['name']); /* explode() 將一個(gè)字符串用指定的字符切割,并返回一個(gè)數(shù)組,這里我們將文件名用'.''切割,結(jié)果存在$myImg中,文件的后綴名即為數(shù)組的最后一個(gè)值 */ $myImgSuffix = array_pop($myImg); /* 根據(jù)上傳文件名獲取文件的后綴名 使用in_array()函數(shù),判斷上傳文件是否符合要求 當(dāng)文件后綴名不在我們?cè)试S的范圍內(nèi)時(shí)退出上傳并返回錯(cuò)誤信息 */ if(!in_array($myImgSuffix, $allowSuffix)){ exit("文件后綴名不符"); } /* mime類型和文件后綴名的對(duì)應(yīng)關(guān)系,我們可以通過(guò)很多途徑查詢到,為了避免用戶自主修改文件后綴名造成文件無(wú)法使用。 mime類型也必須做出限制檢查mime類型,是為了防止上傳者直接修改文件后綴名 導(dǎo)致文件不可用或上傳的文件不符合要求。 */ //數(shù)組內(nèi)容為允許上傳的mime類型 $allowMime = array( "image/jpg", "image/jpeg", "image/pjpeg", "image/gif" ); if(!in_array($_FILES['file']['type'], $allowMime)){ //判斷上傳文件的mime類型是否在允許的范圍內(nèi) exit('文件格式不正確,請(qǐng)檢查'); //如果不在允許范圍內(nèi),退出上傳并返回錯(cuò)誤信息 }
5. 指定されたパスとファイル名を生成します
プロジェクトのファイル配置に従ってファイルの保存パスを生成します。ファイル名の重複によるエラーを避けるために、特定の形式に従ってランダムなファイル名が生成されます。
//指定上傳文件夾 $path = "upload/images/"; /* 根據(jù)當(dāng)前時(shí)間生成隨機(jī)文件名,本行代碼是使用當(dāng)前時(shí)間 + 隨機(jī)一個(gè)0-9的數(shù)字組合成文件名,后綴即為前面取到的文件后綴名 */ $name = date('Y').date('m').date("d").date('H').date('i').date('s').rand(0,9).'.'.$myImgSuffix;
6. ファイルがアップロードされているかどうかを判定する
is_uploaded_file()関數(shù)は、対象のファイルがアップロードされたファイルであるかどうかを判定する専用の関數(shù)です。
<?php //使用is_uploaded_file()判斷是否是上傳文件,函數(shù)介紹見(jiàn)上文 if(is_uploaded_file($_FILEs['file']['tmp_name'])){ } ?>
7. ファイルを指定した場(chǎng)所に移動(dòng)します
move_uploaded_file() 関數(shù)を使用して、ファイルを指定した場(chǎng)所に移動(dòng)し、名前を付けます。 Linux システムにはターゲット ディレクトリに対するアクセス許可があり、ディスク容量が十分であるかどうかが考慮されることに注意してください。そうでない場(chǎng)合、アップロード操作は失敗します。
/* 使用move_uploaded_file()移動(dòng)上傳文件至指定位置,第一個(gè)參數(shù)為上傳文件,第二個(gè)參數(shù)為我們?cè)谇懊嬷付ǖ纳蟼髀窂胶兔Q。 */ if(move_uploaded_file($_FILEs['file']['tmp_name'], $path.$name)){ //提示文件上傳成功 echo "上傳成功"; }else{ /* 文件移動(dòng)失敗,檢查磁盤是否有足夠的空間,或者linux類系統(tǒng)中文件夾是否有足夠的操作權(quán)限 */ echo '上傳失敗'; } }else{ echo '不是上傳文件'; } } ?>
完全なコードは次のとおりです:
<?php if ($_FILES['file']['error'] > 0) { switch ($_FILES['file']['error']) { //錯(cuò)誤碼不為0,即文件上傳過(guò)程中出現(xiàn)了錯(cuò)誤 case '1': echo '文件過(guò)大'; break; case '2': echo '文件超出指定大小'; break; case '3': echo '只有部分文件被上傳'; break; case '4': echo '文件沒(méi)有被上傳'; break; case '6': echo '找不到指定文件夾'; break; case '7': echo '文件寫入失敗'; break; default: echo "上傳出錯(cuò)<br/>"; } } else { $MAX_FILE_SIZE = 100000; if ($_FILES['file']['size'] > $MAX_FILE_SIZE) { exit("文件超出指定大小"); } $allowSuffix = array( 'jpg', 'gif', ); $myImg = explode('.', $_FILES['file']['name']); $myImgSuffix = array_pop($myImg); if (!in_array($myImgSuffix, $allowSuffix)) { exit("文件后綴名不符"); } $allowMime = array( "image/jpg", "image/jpeg", "image/pjpeg", "image/gif", ); if (!in_array($_FILES['file']['type'], $allowMime)) { exit('文件格式不正確,請(qǐng)檢查'); } $path = "upload/images/"; $name = date('Y') . date('m') . date("d") . date('H') . date('i') . date('s') . rand(0, 9) . '.' . $myImgSuffix; if (is_uploaded_file($_FILEs['file']['tmp_name'])) { if (move_uploaded_file($_FILEs['file']['tmp_name'], $path . $name)) { echo "上傳成功"; } else { echo '上傳失敗'; } } else { echo '不是上傳文件'; } } ?>
6. 複數(shù)のファイルのアップロード
PHP で単一のファイルをアップロードするプロセスを紹介します。ただし、便宜上、複數(shù)のファイルを同時(shí)にアップロードする必要がある場(chǎng)合があります。複數(shù)ファイルのアップロードの原理は同じですが、データを処理する場(chǎng)合、アップロードされたデータを特別に処理する必要があります。
<html> <head> <meta charset="utf-8" /> <title>單文件上傳</title> </head> <body> <form action="morefile.php" method="post" enctype="multipart/form-data"> <input type="file" name="file[]"> <input type="file" name="file[]"> <input type="submit" value="上傳"> </form> </body> </html>
これは簡(jiǎn)単なアップロード ページで、フォームは 2 つのファイルを同時(shí)に送信します。このページからコンテンツを送信できます。
注:
input type="file" name="file[]" 以前と比較して、ファイルの後に余分な角括弧が追加されています
2 つ以上の入力タイプを記述します =" file" name="file[]"
$_FILES を使用してファイル情報(bào)を受け取り、配列を印刷および表示します:
<?php var_dump($_FILES); //打印$_FILES查看數(shù)組結(jié)構(gòu) ?>
配列構(gòu)造は右側(cè)に表示されます
2 つのファイルが保存されていることがわかります配列の場(chǎng)合、キー名はアップロードされた単一ファイルと同じです。したがって、for() ループを使用して、2 つのファイルからそれぞれ必要なデータを取得する必要があります。
2 つのファイルのデータが $_FILES に同時(shí)に保存されます。単純なループを使用して、1 つのファイルの情報(bào)を読み取り、ファイルを配置したい場(chǎng)所に移動(dòng)する必要があります。
for ($i=0; $i < count($_FILE['file']['name']); $i++) { /* 用is_uploaded_file()函數(shù)判斷是上傳文件 并且沒(méi)有出現(xiàn)錯(cuò) */ if(is_uploaded_file($_FILEs['file']['tmp_name'][$i]) && $_FILEs['file']['error'][$i] == 0){ if(move_uploaded_file($_FILEs['file']['tmp_name'][$i],'upload/'.$_FILE['file']['name'][$i])){ //用move_uploaded_file()函數(shù)移動(dòng)文件到指定的位置并使用文件原名 echo "上傳成功"; }else{ echo '上傳失敗'; } }else{ echo '上傳失敗'; } }
詳細(xì)な判定プロセスについては、単一ファイルのアップロードを參照してください。ここでは基本的な判定のみが行われ、ファイル サイズや形式についての注意事項(xiàng)はありません。
ファイルサイズや形式は業(yè)務(wù)に応じてご自身で判斷し、エラー通知を提供してください。
7. ファイルアップロードの進(jìn)行処理
ファイルが大きすぎる場(chǎng)合、またはユーザーのネットワーク狀態(tài)が平均的な場(chǎng)合、この時(shí)點(diǎn)でユーザーが空白の畫(huà)面で待機(jī)している場(chǎng)合、通常、アップロードプロセスに時(shí)間がかかります。 , ほとんどのユーザーはアプリケーションを直接削除する必要があると思います。そのため、アップロードの進(jìn)行狀況を監(jiān)視し、リアルタイムでユーザーに報(bào)告する必要性は、Wang という製品によって考慮されます。高品質(zhì)のアップロード進(jìn)行狀況プロンプトにより、アプリケーションはすぐに注目されるようになります。
PHP 5.4 より前は、ファイルのアップロードの進(jìn)行狀況を監(jiān)視するために、常に追加の拡張機(jī)能をインストールする必要がありました。 5.4 からは、session.upload_progress の新機(jī)能が導(dǎo)入されています。セッションを通じてファイルのアップロードの進(jìn)行狀況を監(jiān)視するには、php.ini の設(shè)定を有効にするだけです。 php.ini內(nèi)。
注: この章を?qū)W習(xí)するには、セッション、JavaScript、および Ajax の基本的な知識(shí)が必要です。
php.ini ファイルを設(shè)定し、チェックして変更するように注意する必要があります。
設(shè)定を有効にすると、セッションを通じて完全なファイル アップロードの進(jìn)行狀況を記録できます。セッションでは、次の結(jié)果を含む配列が表示されます:
$_SESSION["upload_progress_test"] = array( //請(qǐng)求時(shí)間 "start_time" => 1234567890, // 上傳文件總大小 "content_length" => 57343257, //已經(jīng)處理的大小 "bytes_processed" => 453489, //當(dāng)所有上傳處理完成后為TRUE,未完成為false "done" => false, "files" => array( 0 => array( //表單中上傳框的名字 "field_name" => "file1", //上傳文件的名稱 "name" => "test1.avi", //緩存文件,上傳的文件即保存在這里 "tmp_name" => "/tmp/phpxxxxxx", //文件上傳的錯(cuò)誤信息 "error" => 0, //是否上傳完成,當(dāng)這個(gè)文件處理完成后會(huì)變成TRUE "done" => true, //這個(gè)文件開(kāi)始處理時(shí)間 "start_time" => 1234567890, //這個(gè)文件已經(jīng)處理的大小 "bytes_processed" => 57343250, ), 1 => array( "field_name" => "file2", "name" => "test2.avi", "tmp_name" => NULL, "error" => 0, "done" => false, "start_time" => 1234567899, "bytes_processed" => 54554, ), ) );
この配列は、ファイルのアップロードの進(jìn)行狀況を詳細(xì)に記録し、処理されたファイルのステータスは true です。次に、jQuery AJAX の例を使用して、ファイルのアップロードの進(jìn)行プロセスを?qū)W習(xí)します。
まず、フォームに type=hidden の input タグを追加する必要があります。タグの値はカスタマイズされます (この値はバックグラウンドで使用されるため、意味のある値を使用することをお?jiǎng)幛幛筏蓼?
<form id="upload-form" action="upload.php" method="POST" enctype="multipart/form-data" style="margin:15px 0" target="hidden_iframe"> <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="test" /> <p><input type="file" name="file1" /></p> <p><input type="submit" value="Upload" /></p> </form> <div id="progress" style="margin-bottom:15px;display:none;"> <div>0%</div> </div>
こちら、ID が追加されます。これは、アップロードの進(jìn)行狀況を表示するコンテナとして使用される進(jìn)行狀況 div です。 js の setTimeout() を使用して ajax を定期的に実行し、ファイルのアップロードの進(jìn)行狀況を取得します。バックグラウンド ファイルはファイル アップロードの進(jìn)行狀況のパーセンテージを返します。
<script src="../jquery/1.8.2/jquery.min.js"></script> <script type="text/javascript"> function fetch_progress(){ $.get('progress.php',{ '<?php echo ini_get("session.upload_progress.name"); ?>' : 'test'}, function(data){ var progress = parseInt(data); $('#progress .label').html(progress + '%'); if(progress < 100){ setTimeout('fetch_progress()', 100); //當(dāng)上傳進(jìn)度小于100%時(shí),顯示上傳百分比 }else{ $('#progress .label').html('完成!'); //當(dāng)上傳進(jìn)度等于100%時(shí),顯示上傳完成 } }, 'html'); } $('#upload-form').submit(function(){ $('#progress').show(); setTimeout('fetch_progress()', 100);//每0.1秒執(zhí)行一次fetch_progress(),查詢文件上傳進(jìn)度 }); </script>
上記のコードは、JQ の ajax を使用して、ファイルのアップロードの進(jìn)行狀況を 0.1 秒ごとに返します。そして、divタグに進(jìn)捗率を表示します。
バックグラウンド コードは 2 つの部分に分割する必要があります。upload.php はファイルのアップロードを処理します。 progress.php はセッション內(nèi)のアップロードの進(jìn)行狀況を取得し、進(jìn)行狀況のパーセンテージを返します。
ここではファイルのアップロードについては詳しく説明しません。詳細(xì)な手順については、上記を參照してください。upload.php:
<?php if(is_uploaded_file($_FILES['file1']['tmp_name'])){ //判斷是否是上傳文件 //unlink($_FILES['file1']['tmp_name']); move_uploaded_file($_FILES['file1']['tmp_name'], "./{$_FILES['file1']['name']}"); //將緩存文件移動(dòng)到指定位置 } ?> 主要關(guān)注progress.php: <?php /* 開(kāi)啟session。請(qǐng)注意在session_start()之前,請(qǐng)不要有想瀏覽器輸出內(nèi)容的動(dòng)作,否則可能引起錯(cuò)誤。 */ session_start(); //ini_get()獲取php.ini中環(huán)境變量的值 $i = ini_get('session.upload_progress.name'); //ajax中我們使用的是get方法,變量名稱為ini文件中定義的前綴 拼接 傳過(guò)來(lái)的參數(shù) $key = ini_get("session.upload_progress.prefix") . $_GET[$i]; //判斷 SESSION 中是否有上傳文件的信息 if (!empty($_SESSION[$key])) { //已上傳大小 $current = $_SESSION[$key]["bytes_processed"]; //文件總大小 $total = $_SESSION[$key]["content_length"]; //向 ajax 返回當(dāng)前的上傳進(jìn)度百分比。 echo $current < $total ? ceil($current / $total * 100) : 100; }else{ echo 100; } ?>
この時(shí)點(diǎn)で、フロントエンドでファイルの進(jìn)行コードが完成しました。クールなファイルアップロード機(jī)能を作成してください。
學(xué)習(xí)體験: ファイルアップロードの 6 つのステップを覚えてください