国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php melengkapkan muat naik fail mengikut tatasusunan dan langkah

Kandungan fail yang diserahkan oleh borang menghala ke file.php.

Kami memproses fail yang dimuat naik melalui kod PHP dalam file.php.

Kami memilih gambar bernama untuk dimuat naik. Andaikan nama gambar ialah: psu.jpg, klik untuk memuat naik.

PHP telah menyediakan fungsi sistem khas $_FILES untuk data fail Semua data berkaitan fail yang dimuat naik disimpan dalam fungsi sistem ini.

Dalam fail PHP, kami mencetak $_FILES untuk melihat struktur tatasusunan ini:

<?php
//var_dump()或print_r()
//打印變量的相關(guān)信息,將變量的信息詳細(xì)的展示出來
var_dump($_FILES);             
?>

Struktur tatasusunan hasil cetakan adalah seperti berikut:

array (size=1)
    'file' => 
       array (size=5)
       //文件名
      'name' => string 'psu.jpg' (length=7) 
      //文件的mime類型
      'type' => string 'image/jpeg' (length=10)                    
      //緩存文件,上傳的圖片即保存在這里
      'tmp_name' => string 'E:\wamp\tmp\phpC32A.tmp' (length=23)
      //錯誤碼,詳見上面錯誤碼介紹
      'error' => int 0                                             
      //上傳的文件大小
      'size' => int 225824

Dapatkan di atas struktur Array.

Kita boleh memulakan proses pemprosesan fail.

Langkah pertama ialah menentukan kod ralat:

<?php
if($_FILES['file']['error'] > 0){
   switch ($_FILES['file']['error']) {    //錯誤碼不為0,即文件上傳過程中出現(xiàn)了錯誤
       case '1':
           echo '文件過大';
           break;
       case '2':
           echo '文件超出指定大小';
           break;
       case '3':
           echo '只有部分文件被上傳';
           break;
       case '4':
           echo '文件沒有被上傳';
           break;
       case '6':
           echo '找不到指定文件夾';
           break;
       case '7':
           echo '文件寫入失敗';
           break;
       default:
           echo "上傳出錯<br/>";
   }
}else{
   //錯誤碼為0,即上傳成功,可以進(jìn)行后續(xù)處理,處理流程見下文
}
?>

Kod di atas memperkenalkan kod ralat dan ralat yang sepadan secara terperinci Kod ralat untuk menjana gesaan ralat yang tepat.

Langkah kedua ialah menentukan sama ada fail melebihi saiz. Dalam projek sebenar, disebabkan had perkakasan sistem dan had peranti storan, adalah mustahil untuk pengguna memuat naik fail tanpa had, jadi kami perlu mengehadkan saiz fail yang dimuat naik oleh pengguna. Menentukan saiz had yang sesuai boleh menjadikan aplikasi kami berjalan dengan lebih stabil.

<?php
//判斷錯誤
if ($_FILES['file']['error'] > 0) {
    //有錯誤可停止執(zhí)行
} else {
    //當(dāng)前上傳文件無誤,運(yùn)行本段代碼
    //判斷文件是否超出了指定的大小
    //單位為byte
    $MAX_FILE_SIZE = 100000;
    if ($_FILES['file']['size'] > $MAX_FILE_SIZE) {
        //判斷,如果上傳的文件,大小超出了我們給的限制范圍,退上傳并產(chǎn)生錯誤提示
        exit("文件超出指定大小");
    }
}
?>

Mentakrifkan saiz fail yang kami tentukan sebagai $MAX_FILE_SIZE Unit pengiraan pembolehubah ini ialah bait, yang sepadan dengan saiz $_FILES['file']['size'] bagi fail yang dimuat naik.
Dalam kod sampel, had adalah fail dengan saiz lebih kurang 100K dan ke bawah.

Langkah ketiga ialah menentukan sama ada jenis mime fail adalah betul.

Lazimnya, fungsi muat naik fail kami perlu menentukan sama ada fail yang dimuat naik oleh pengguna memenuhi keperluan Selepas memuat naik fail yang tidak tersedia, kesan paparan keseluruhan aplikasi dalam talian akan terjejas. akan menyebabkan kesan buruk. Jadi kita perlu menggunakan jenis mime dan nama akhiran untuk menentukan sama ada fail yang dimuat naik oleh pengguna memenuhi keperluan.

Dalam kod contoh berikut, kami menganggap bahawa keperluan projek semasa adalah untuk menentukan imej yang dimuat naik, memerlukan muat naik fail dengan akhiran GIF atau jpg Apabila pengguna memuat naik fail yang tidak memenuhi keperluan, mesej ralat dikembalikan.

<?php
/*判斷后綴名和MIME類型是否符合指定需求
例如:
當(dāng)前項(xiàng)目指定上傳后綴為.jpg或.gif的圖片,則$allowSuffix = array('jpg','gif');
*/
//定義允許的后綴名數(shù)組
$myImg = explode('.', $_FILES['file']['name']);
/*
explode() 將一個字符串用指定的字符切割,并返回一個數(shù)組,這里我們將文件名用'.''切割,結(jié)果存在$myImg中,文件的后綴名即為數(shù)組的最后一個值
*/
$myImgSuffix = array_pop($myImg);
/*
根據(jù)上傳文件名獲取文件的后綴名
使用in_array()函數(shù),判斷上傳文件是否符合要求
當(dāng)文件后綴名不在我們允許的范圍內(nèi)時退出上傳并返回錯誤信息
*/
if(!in_array($myImgSuffix, $allowSuffix)){
    exit("文件后綴名不符");
}
/*
mime類型和文件后綴名的對應(yīng)關(guān)系,我們可以通過很多途徑查詢到,為了避免用戶自主修改文件后綴名造成文件無法使用。
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('文件格式不正確,請檢查');
    //如果不在允許范圍內(nèi),退出上傳并返回錯誤信息
}
?>

Langkah keempat ialah menjana laluan dan nama fail yang ditentukan.

Jana laluan penyimpanan fail mengikut susunan fail projek Untuk mengelakkan ralat yang disebabkan oleh nama fail pendua, nama fail rawak dijana mengikut format tertentu.

<?php
//指定上傳文件夾
$path = "upload/images/";
/*
根據(jù)當(dāng)前時間生成隨機(jī)文件名,本行代碼是使用當(dāng)前時間 + 隨機(jī)一個0-9的數(shù)字組合成文件名,后綴即為前面取到的文件后綴名
*/
$name = date('Y').date('m').date("d").date('H').date('i').date('s').rand(0,9).'.'.$myImgSuffix;
?>

Langkah kelima ialah menentukan sama ada fail itu dimuat naik.

Fungsi is_uploaded_file() ialah fungsi khusus untuk menentukan sama ada fail sasaran ialah fail yang dimuat naik.

<?php

//使用is_uploaded_file()判斷是否是上傳文件,函數(shù)介紹見上文
if(is_uploaded_file($_FILEs['file']['tmp_name'])){    

}
?>

Langkah 6, alihkan fail ke lokasi yang ditentukan.

Gunakan fungsi move_uploaded_file() untuk mengalihkan fail ke lokasi yang ditentukan dan menamakannya. Perlu diingatkan bahawa sistem Linux mempunyai kebenaran pada direktori sasaran dan sama ada ruang cakera mencukupi, jika tidak, operasi muat naik akan gagal.

<?php
/*
使用move_uploaded_file()移動上傳文件至指定位置,第一個參數(shù)為上傳文件,第二個參數(shù)為我們在前面指定的上傳路徑和名稱。
*/
if(move_uploaded_file($_FILEs['file']['tmp_name'], $path.$name)){
           //提示文件上傳成功
           echo "上傳成功";                                
       }else{
/*
文件移動失敗,檢查磁盤是否有足夠的空間,或者linux類系統(tǒng)中文件夾是否有足夠的操作權(quán)限
*/
           echo '上傳失敗';                                                
       }
   }else{
       echo '不是上傳文件';
   }

}
?>

Kami menyusun serpihan fail ini menjadi keseluruhan fail:

<?php
if ($_FILES['file']['error'] > 0) {
   switch ($_FILES['file']['error']) {
       //錯誤碼不為0,即文件上傳過程中出現(xiàn)了錯誤
       case '1':
           echo '文件過大';
           break;
       case '2':
           echo '文件超出指定大小';
           break;
       case '3':
           echo '只有部分文件被上傳';
           break;
       case '4':
           echo '文件沒有被上傳';
           break;
       case '6':
           echo '找不到指定文件夾';
           break;
       case '7':
           echo '文件寫入失敗';
           break;
       default:
           echo "上傳出錯<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('文件格式不正確,請檢查');
   }

   $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 '不是上傳文件';
   }

}
?>


Meneruskan pembelajaran
||
<?php if ($_FILES['file']['error'] > 0) { switch ($_FILES['file']['error']) { //錯誤碼不為0,即文件上傳過程中出現(xiàn)了錯誤 case '1': echo '文件過大'; break; case '2': echo '文件超出指定大小'; break; case '3': echo '只有部分文件被上傳'; break; case '4': echo '文件沒有被上傳'; break; case '6': echo '找不到指定文件夾'; break; case '7': echo '文件寫入失敗'; break; default: echo "上傳出錯<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('文件格式不正確,請檢查'); } $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 '不是上傳文件'; } } ?>