Téléchargement ...LOGIN

Téléchargement de fichiers de tutoriel de base de développement PHP

1. Téléchargement de fichiers PHP

Nous rencontrons souvent de nombreuses situations comme celle-ci dans notre utilisation quotidienne :

  • Téléchargez des photos dans l'espace QQ

  • Téléchargez des photos dans WeChat Moments

  • Envoyez un e-mail et téléchargez des pièces jointes

  • Il est nécessaire de télécharger une photo ou une carte d'identité lors de l'authentification

  • Il existe également diverses demandes avancées par gou (gou) pour analyser et télécharger différentes choses.

  • Nous devons prendre conscience des exigences mises en avant par le produit Wang.

  • Le téléchargement de fichiers est l'une des compétences essentielles pour un programmeur PHP.

En apprenant le téléchargement de fichiers, vous verrez l'essence du téléchargement de fichiers à travers le phénomène d'utilisation !


2. Faites attention au fichier php.ini lors du téléchargement de fichiers

Avant d'expliquer formellement le téléchargement de ce chapitre, la première chose à faire est de prêter attention au fichier php.ini.

Pour la première fois, nous découvrons comment modifier le fichier php.ini. Si vos éléments de configuration ne correspondent pas à ce que nous avons dit, veuillez faire attention à la modification.

Comprenons chaque élément de configuration.

Voyons comment modifier php.ini.

Ouvrez le fichier de configuration php.ini dans phpstudy.

52.png

Il y a trop de fichiers php.ini. Si vous ne les trouvez pas, vous pouvez utiliser ctrl+f pour rechercher les éléments de configuration associés.


53.png


Taille recommandée : file_size < ; post_max_size < memory_limit

De plus, vous devez faire attention au temps d'exécution du script.

max_execution_time, l'unité de ce paramètre est la seconde.
Ce paramètre permet de définir le temps d'exécution maximum du script.
Vous pouvez également apporter les modifications appropriées en fonction de vos besoins. Il n’est généralement pas nécessaire de le modifier, la valeur par défaut du système suffit. Lors du téléchargement de fichiers très volumineux, ce paramètre peut être modifié.

Le téléchargement prend trop de temps et expirera. Si vous définissez ce paramètre sur 0, le délai d'expiration n'est pas limité et n'est pas recommandé.

Après avoir terminé la configuration appropriée de php.ini, nous pouvons commencer à essayer de terminer le premier téléchargement de fichier.


3. Étapes du téléchargement de fichiers

Afin de mieux apprendre PHP, nous résumerons le téléchargement de fichiers extrêmement complexe de PHP. Résumé en 6 étapes.

En utilisation réelle, vous pouvez terminer avec succès le téléchargement du fichier PHP en suivant ces 6 étapes :

1 Déterminez s'il y a un code d'erreur

. Explication détaillée du code d'erreur renvoyé par le système :


54.png


Remarque : il n'y a pas d'erreur code 5

2. Personnalisez si la taille du fichier dépasse la plage

Lors du développement de la fonction de téléchargement. En tant que développeurs, nous, en plus de la valeur de téléchargement maximale spécifiée dans php.ini.

Nous définissons généralement également une valeur, qui correspond à la taille limite de téléchargement spécifiée par l'entreprise.

Par exemple :
Sina Weibo ou QQ Zone n'autorise qu'une seule photo d'avatar de 2M. Lors du téléchargement d’albums, vous pouvez en télécharger plus de 2 millions.

Ainsi, son système prend en charge le téléchargement de fichiers plus volumineux.

La taille du fichier de jugement ici est utilisée pour limiter la taille du fichier téléchargé que nous souhaitons spécifier dans les affaires réelles.

3. Déterminez si le nom du suffixe et le type MIME correspondent

Il y a aussi de mauvaises personnes dans le monde en ligne. Ils inséreront des virus dans les images, téléchargeront des virus dans des pièces jointes et inséreront des virus ou des images pornographiques dans des pages Web.

Nous devons juger du suffixe et du type MIME du fichier téléchargé.

MIME (MultiPurpose Internet Mail Extensions) est un type d'extension de messagerie Internet polyvalente. Il s'agit d'un type de méthode qui définit un fichier avec une certaine extension à ouvrir par une application. Lors de l'accès au fichier avec l'extension, le navigateur utilisera automatiquement l'application spécifiée pour l'ouvrir. Il est principalement utilisé pour spécifier certains noms de fichiers définis par le client et certaines méthodes d'ouverture de fichiers multimédias.

Lors de la détermination du suffixe et du type MIME, nous utiliserons une fonction PHP in_array(), qui transmet deux paramètres.
Le premier paramètre est la valeur à juger ;
Le deuxième paramètre est le tableau de plages.

Nous utilisons cette fonction pour déterminer si l'extension du fichier et le type MIME se situent dans la plage autorisée.

4. Générer le nom du fichier

Notre fichier a été téléchargé avec succès, mais il n'enregistrera pas le nom d'origine.
Parce que certaines personnes qui ont des mots-clés sensibles dans leur nom d'origine enfreindront les lois et réglementations en vigueur dans notre pays.

Nous pouvons utiliser date(), mt_rand() ou unique() pour générer des noms de fichiers aléatoires.

5. Déterminez si le fichier est téléchargé

Lorsque le fichier est téléchargé avec succès, le système télécharge le fichier temporaire téléchargé sur le système. répertoire temporaire. Créez un fichier temporaire.

Un nom de fichier temporaire sera également généré. Ce que nous devons faire est de déplacer les fichiers temporaires vers le répertoire spécifié sur le système.

Il n'est pas scientifique de ne pas bouger aveuglément avant de bouger, ou de mal bouger. Avant de déménager, nous devons utiliser les fonctions pertinentes pour déterminer si le fichier téléchargé est un fichier temporaire.

is_uploaded_file() transmet un paramètre (le nom du fichier cache dans $_FILES) pour déterminer si le nom transmis est un fichier téléchargé

Déplacez le fichier temporaire vers le fichier spécifié. emplacement

Les fichiers temporaires sont de vrais fichiers temporaires, nous devons les déplacer vers le répertoire de notre site Web.

Rendre les données de notre répertoire de sites Web accessibles aux autres.

Nous utilisons : move_uploaded_file().
Cette fonction déplace le fichier téléchargé vers l'emplacement spécifié et le nomme.
Passez deux paramètres :
Le premier paramètre est le fichier téléchargé qui spécifie le déplacement
Le deuxième paramètre est la chaîne concaténant le dossier et le nom spécifiés


4. Notes sur le formulaire de téléchargement de fichiers

Nous commençons l'apprentissage formel et apprenons à télécharger des fichiers. Pour télécharger des fichiers, un formulaire doit être préparé sur la page Web.

Il s'agit d'un simple formulaire de page HTML. Le formulaire prépare une classe dédiée au contenu du fichier. Lorsque type=file est saisi, le contenu du fichier est téléchargé par défaut.

Jetons un coup d'œil au code et aux notes du formulaire

<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>

Remarque :

  • La méthode paramètre dans le formulaire doit être post. S'il est obtenu, le téléchargement du fichier ne peut pas être effectué

  • le type d'enc doit être multipart/form-data


5. Terminez le téléchargement du fichier selon le tableau et les étapes

1. Fonction système $_FILES

Le contenu du fichier soumis par le formulaire le formulaire pointe vers file.php .
Nous traitons les fichiers téléchargés via le code PHP dans file.php.

Nous choisissons une image nommée à télécharger. Supposons que le nom de l'image soit : hua.jpg, cliquez pour télécharger.

PHP a préparé une fonction système spéciale $_FILES pour les données de fichiers. Toutes les données associées aux fichiers téléchargés sont enregistrées dans cette fonction système.

Dans le fichier PHP, on imprime $_FILES pour observer la structure de ce tableau :

<?php
//var_dump()或print_r()
//打印变量的相关信息,将变量的信息详细的展示出来
var_dump($_FILES);             
?>

La structure du tableau du résultat imprimé est la suivante :

55.png

La structure de tableau ci-dessus est obtenue.

Nous pouvons démarrer le processus de traitement du dossier.

2. Déterminez le code d'erreur

<?php
if($_FILES['file']['error'] > 0){
    switch ($_FILES['file']['error']) {    //错误码不为0,即文件上传过程中出现了错误
        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,即上传成功,可以进行后续处理,处理流程见下文
}
?>

Le code ci-dessus présente le code d'erreur et l'erreur correspondante en détail. Nous pouvons générer des invites d'erreur précises en fonction du code d'erreur. .

3. Déterminez si le fichier dépasse la taille

Dans les projets réels, en raison des limitations du matériel système et des limitations du périphérique de stockage, il est impossible d'autoriser les utilisateurs à télécharger sans fichiers de restrictions, nous devons donc limiter la taille des fichiers téléchargés par les utilisateurs. Définir une taille limite appropriée peut rendre notre application plus stable.

//判断错误
if($_FILES['file']['error'] > 0){
        //有错误可停止执行
}else{
    //当前上传文件无误,运行本段代码
 
    //判断文件是否超出了指定的大小
    //单位为byte
    $MAX_FILE_SIZE = 100000;
    if($_FILES['file']['size'] > $MAX_FILE_SIZE){
    //判断,如果上传的文件,大小超出了我们给的限制范围,退上传并产生错误提示
        exit("文件超出指定大小");                           
    }

Définit la taille du fichier que nous spécifions comme $MAX_FILE_SIZE. L'unité de comptage de cette variable est l'octet, ce qui correspond à la taille $_FILES['file']['size'] du fichier téléchargé.
Dans l'exemple de code, la limite est celle des fichiers d'une taille d'environ 100 Ko et moins.

4. Déterminez si le type MIME du fichier est correct

Le plus souvent, notre fonction de téléchargement de fichiers doit déterminer si le fichier téléchargé par l'utilisateur répond aux exigences. . Après le téléchargement de fichiers indisponibles, cela aura un impact négatif sur l'effet d'affichage global de l'application en ligne. Nous devons donc utiliser le type MIME et le nom du suffixe pour déterminer si le fichier téléchargé par l'utilisateur répond aux exigences.

Dans l'exemple de code ci-dessous, nous supposons que l'exigence actuelle du projet est de spécifier les images téléchargées, nécessitant le téléchargement de fichiers avec le suffixe GIF ou jpg. Lorsque l'utilisateur télécharge un fichier qui ne répond pas aux exigences, un message d'erreur est renvoyé.

/*判断后缀名和MIME类型是否符合指定需求
例如:
当前项目指定上传后缀为.jpg或.gif的图片,则$allowSuffix = array('jpg','gif');
*/
//定义允许的后缀名数组
$myImg = explode('.', $_FILES['file']['name']);         
 
/*
explode() 将一个字符串用指定的字符切割,并返回一个数组,这里我们将文件名用'.''切割,结果存在$myImg中,文件的后缀名即为数组的最后一个值
*/
$myImgSuffix = array_pop($myImg);
/*
根据上传文件名获取文件的后缀名
使用in_array()函数,判断上传文件是否符合要求
当文件后缀名不在我们允许的范围内时退出上传并返回错误信息
*/ 
if(!in_array($myImgSuffix, $allowSuffix)){                             
        exit("文件后缀名不符");
}
/*
mime类型和文件后缀名的对应关系,我们可以通过很多途径查询到,为了避免用户自主修改文件后缀名造成文件无法使用。
mime类型也必须做出限制检查mime类型,是为了防止上传者直接修改文件后缀名
导致文件不可用或上传的文件不符合要求。
*/
//数组内容为允许上传的mime类型
$allowMime = array(
            "image/jpg",
            "image/jpeg",
            "image/pjpeg",
            "image/gif"
            );
if(!in_array($_FILES['file']['type'], $allowMime)){                      //判断上传文件的mime类型是否在允许的范围内
      exit('文件格式不正确,请检查');
    //如果不在允许范围内,退出上传并返回错误信息
}

5. Générez le chemin et le nom de fichier spécifiés

Générez le chemin de stockage des fichiers en fonction de la disposition des fichiers du projet. Afin d'éviter les erreurs causées par des noms de fichiers en double, un nom de fichier aléatoire est généré selon un certain format.

//指定上传文件夹
$path = "upload/images/";
/*
根据当前时间生成随机文件名,本行代码是使用当前时间 + 随机一个0-9的数字组合成文件名,后缀即为前面取到的文件后缀名
*/
$name = date('Y').date('m').date("d").date('H').date('i').date('s').rand(0,9).'.'.$myImgSuffix;

6. Déterminer si le fichier est téléchargé

La fonction is_uploaded_file() est une fonction dédiée pour déterminer si le fichier cible est un fichier téléchargé.

<?php
//使用is_uploaded_file()判断是否是上传文件,函数介绍见上文
if(is_uploaded_file($_FILEs['file']['tmp_name'])){    
}
?>

7. Déplacez le fichier vers l'emplacement spécifié

Utilisez la fonction move_uploaded_file() pour déplacer le fichier vers l'emplacement spécifié et nommez-le. Il convient de noter que le système Linux dispose d'autorisations sur le répertoire cible et que l'espace disque est suffisant, sinon l'opération de téléchargement échouera.

/*
使用move_uploaded_file()移动上传文件至指定位置,第一个参数为上传文件,第二个参数为我们在前面指定的上传路径和名称。
*/
 
if(move_uploaded_file($_FILEs['file']['tmp_name'], $path.$name)){
            //提示文件上传成功
            echo "上传成功";                                
        }else{
/*
文件移动失败,检查磁盘是否有足够的空间,或者linux类系统中文件夹是否有足够的操作权限
*/
            echo '上传失败';                                                
        }
    }else{
        echo '不是上传文件';
    }
}
?>

Le code complet est le suivant :

<?php
if ($_FILES['file']['error'] > 0) {
    switch ($_FILES['file']['error']) {
        //错误码不为0,即文件上传过程中出现了错误
        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 '不是上传文件';
    }

}
?>

6. Téléchargement multi-fichiers

Présente le processus de téléchargement d'un seul fichier en PHP. Mais parfois, pour des raisons de commodité, nous devons répondre au besoin de télécharger plusieurs fichiers en même temps. Le principe du téléchargement multi-fichiers est le même, mais lors du traitement des données, les données téléchargées doivent être spécialement traitées.

<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>

Voici une simple page de téléchargement, et le formulaire soumet deux fichiers en même temps. Nous pouvons soumettre du contenu via cette page.

Remarque :

  • input type="file" name="file[]" est ajouté après le fichier par rapport à avant A crochet

  • écrit 2 entrées ou plus type="file" name="file[]"
    Nous utilisons $_FILES pour recevoir les informations sur le fichier, imprimer et visualisez le tableau :

<?php
var_dump($_FILES); //打印$_FILES查看数组结构
?>

La structure du tableau est affichée à droite

On peut voir que deux fichiers sont stockés dans un tableau, le nom de la clé est le même que le fichier unique téléchargé. Par conséquent, nous devons utiliser une boucle for() pour récupérer respectivement les données requises des deux fichiers.

Les données de deux fichiers sont enregistrées dans $_FILES en même temps. Nous devons utiliser une simple boucle pour lire les informations d'un seul fichier et déplacer le fichier vers l'emplacement souhaité.

for ($i=0; $i < count($_FILE['file']['name']); $i++) {  
/*
用is_uploaded_file()函数判断是上传文件
并且没有出现错
*/
    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()函数移动文件到指定的位置并使用文件原名
    echo "上传成功";
        }else{
            echo '上传失败';
        }
    }else{
       echo '上传失败';
    }
}

Pour le processus de jugement détaillé, veuillez vous référer au téléchargement d'un seul fichier. Seul un jugement de base est effectué ici, et il n'y a aucun rappel sur la taille et le format du fichier.
Veuillez juger vous-même de la taille et du format du fichier en fonction de l'entreprise et fournir des rappels d'erreur.


7. Traitement de la progression du téléchargement du fichier

Lorsque le fichier est trop volumineux ou que l'état du réseau de l'utilisateur est moyen, le processus de téléchargement prend généralement un certain temps, si l'utilisateur doit attendre avec un écran vide à ce moment-là, je pense que la plupart des utilisateurs fermeront simplement l'application, donc la nécessité de surveiller la progression du téléchargement et de faire rapport à l'utilisateur en temps réel est placée sur le bureau par le produit Wang. Une invite de progression du téléchargement de haute qualité fera instantanément ressembler votre application.
Avant PHP 5.4, vous deviez toujours installer des extensions supplémentaires pour surveiller la progression du téléchargement des fichiers. À partir de la version 5.4, la nouvelle fonctionnalité session.upload_progress est introduite. Il suffit d'activer la configuration dans php.ini pour surveiller la progression du téléchargement du fichier tout au long de la session. dans php.ini.

Remarque : Pour apprendre ce chapitre, vous devez avoir une connaissance de base de la session, du javascript et de l'ajax.

Nous devons configurer, faire attention à vérifier et modifier le fichier php.ini :

56.png

Avec la configuration activée, nous pouvons enregistrer la progression complète du téléchargement du fichier tout au long de la session . Dans la session, un tableau avec les résultats suivants apparaîtra :

 $_SESSION["upload_progress_test"] = array(
    //请求时间
     "start_time" => 1234567890,
     // 上传文件总大小
     "content_length" => 57343257,
     //已经处理的大小
     "bytes_processed" => 453489,
     //当所有上传处理完成后为TRUE,未完成为false
     "done" => false,
 
     "files" => array(
      0 => array(
        //表单中上传框的名字
 
       "field_name" => "file1",
 
       //上传文件的名称
       "name" => "test1.avi",
 
       //缓存文件,上传的文件即保存在这里
       "tmp_name" => "/tmp/phpxxxxxx",
 
       //文件上传的错误信息
       "error" => 0,
 
       //是否上传完成,当这个文件处理完成后会变成TRUE
       "done" => true,
 
       //这个文件开始处理时间
       "start_time" => 1234567890,
 
       //这个文件已经处理的大小
       "bytes_processed" => 57343250,     
      ),
 
      1 => array(
       "field_name" => "file2",
       "name" => "test2.avi",
       "tmp_name" => NULL,
       "error" => 0,
       "done" => false,                    
       "start_time" => 1234567899,
       "bytes_processed" => 54554,
      ),
     )
    );

Ce tableau enregistre la progression du téléchargement des fichiers en détail et l'état des fichiers qui ont été traités est vrai. Ensuite, nous utilisons un exemple jQuery AJAX pour apprendre le processus de progression du téléchargement de fichiers.

Tout d'abord, dans le formulaire, vous devez ajouter une balise d'entrée avec type=hidden, et la valeur de la balise est personnalisée (il est recommandé d'utiliser une valeur significative, car cette valeur sera utilisée en arrière-plan)

<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>

Ici, un div avec l'ID de progression est ajouté en tant que conteneur pour afficher la progression du téléchargement. Nous utilisons setTimeout() de js pour exécuter ajax régulièrement afin d'obtenir la progression du téléchargement du fichier, et le fichier d'arrière-plan renvoie le pourcentage de progression du téléchargement du fichier.

<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);    //当上传进度小于100%时,显示上传百分比
        }else{
            $('#progress .label').html('完成!'); //当上传进度等于100%时,显示上传完成
        }
    }, 'html');
}
 
$('#upload-form').submit(function(){
    $('#progress').show();
    setTimeout('fetch_progress()', 100);//每0.1秒执行一次fetch_progress(),查询文件上传进度
});
</script>

Le code ci-dessus renvoie la progression du téléchargement du fichier toutes les 0,1 seconde via l'ajax de JQ. Et affichez le pourcentage de progression dans la balise div.

Le code d'arrière-plan doit être divisé en deux parties. upload.php gère le téléchargement de fichiers. progress.php obtient la progression du téléchargement dans la session et renvoie le pourcentage de progression.

Je n'entrerai pas dans les détails du téléchargement de fichiers ici. Veuillez vous référer à ce qui précède pour les étapes détaillées 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']}");     //将缓存文件移动到指定位置
}
?>
主要关注progress.php:
<?php
/*
开启session。请注意在session_start()之前,请不要有想浏览器输出内容的动作,否则可能引起错误。
*/
 
session_start();
 
//ini_get()获取php.ini中环境变量的值
$i = ini_get('session.upload_progress.name');
 
//ajax中我们使用的是get方法,变量名称为ini文件中定义的前缀 拼接 传过来的参数
$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 返回当前的上传进度百分比。
    echo $current < $total ? ceil($current / $total * 100) : 100;
}else{
    echo 100;                                                       
}
?>

À ce stade, le code de progression du fichier est terminé. Avec le front-end, nous pouvons faire une fonction sympa de téléchargement de fichiers !

Expérience d'apprentissage : rappelez-vous les six étapes du téléchargement de fichiers


section suivante
<?php if ($_FILES['file']['error'] > 0) { switch ($_FILES['file']['error']) { //错误码不为0,即文件上传过程中出现了错误 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 '不是上传文件'; } } ?>
soumettreRéinitialiser le code
chapitredidacticiel