Maison  >  Article  >  développement back-end  >  Exemple détaillé de la façon de redéfinir le nom d'un fichier téléchargé

Exemple détaillé de la façon de redéfinir le nom d'un fichier téléchargé

怪我咯
怪我咯original
2017-05-02 11:28:242757parcourir

Lors du téléchargement de fichiers, vous devez spécifier le chemin du fichier de téléchargement. Cependant, si vous êtes confronté à différents fichiers téléchargés par un grand nombre d'utilisateurs, il est inévitable qu'il y ait la possibilité de noms en double, ce qui entraînera le remplacement des fichiers. entraînant une perte de fichiers, il est donc important de télécharger les fichiers. La redéfinition du nom est très importante. Ce chapitre vous guidera à travers cela. Comment définir le nom du fichier téléchargé ?

Tout d'abord, nous interceptons le nom du fichier téléchargé via la fonction strstr() pour obtenir le suffixe du fichier téléchargé.

Obtenez ensuite l'horodatage actuel du système via la fonction time(), redéfinissez le nom du fichier téléchargé

puis utilisez la fonction move_uploaded_file() pour télécharger le fichier.

Avant d'exécuter le téléchargement du fichier, afin d'éviter les attaques potentielles et la gestion illégale de fichiers qui ne peuvent pas interagir via des scripts, la fonction is_uploaded_file() doit être utilisée pour déterminer si le fichier spécifié a été téléchargé via HTTP POST. Si tel est le cas, renvoie un vrai.

Fonction is_uploaded_file()

La fonction is_uploaded_file() détermine si le fichier spécifié est téléchargé via HTTP POST. Sa syntaxe est la suivante :

is_uploaded_file(filename)
<.> Le paramètre filename doit spécifier une variable similaire à $_FILES['filename']['tmp_name']. Le nom du fichier téléchargé depuis le client ne peut pas être utilisé

$_FILES['filename']['name']

L'utilisation de la fonction is_uploaded_file() pour juger les fichiers téléchargés peut garantir que les utilisateurs malveillants ne peuvent pas tromper les scripts pour qu'ils accèdent à des fichiers inaccessibles, tels que /etc/passwd. Exemple détaillé de la façon de redéfinir le nom dun fichier téléchargé

Fonction move_uploaded_file()

La fonction move_uploaded_file() télécharge un fichier à l'emplacement spécifié sur le serveur. Renvoie vrai en cas de succès. Sinon, renvoyez false. La syntaxe est la suivante :

move_uploaded_file(filename,destination)

Le paramètre filename spécifie le nom de fichier temporaire du fichier téléchargé, c'est-à-dire $_FILES[tmp_name] ; destination fait référence au nouveau chemin et au nom du fichier enregistré après le téléchargement. Si le nom de fichier de paramètre n'est pas un fichier téléchargé légal, aucune opération n'aura lieu

move_uploaded_file() renverra false si le nom de fichier de paramètre est un fichier téléchargé légal, mais pour. S'il ne peut pas être déplacé pour une raison quelconque, aucune opération n'aura lieu. move_uploaded_file() renverra False et un message d'avertissement sera émis.

Enfin, utilisez la fonction rand et utilisez l'entier aléatoire qu'elle génère aléatoirement comme nouveau nom du fichier téléchargé.

Exemple d'application

Cet exemple redéfinit le nom du fichier téléchargé, sélectionnez le nom du fichier à téléchargé, puis cliquez sur le bouton « Télécharger », le fichier sera téléchargé dans le dossier upfile sous le chemin local spécifié dans le programme et le nom du fichier sera redéfini.

Exemple détaillé de la façon de redéfinir le nom dun fichier téléchargé

Le code clé pour cet exemple est le suivant :

<?PHP
header("content-type:text/html;charset=utf-8");
if(!empty($_FILES[up_picture][name])){                                       //判断上传文件是否为空
    if($_FILES[&#39;up_picture&#39;][&#39;error&#39;]>0){                                    //判断文件是否可以上传到服务器
        echo "上传错误";
        switch($_FILES[&#39;up_picture&#39;][&#39;error&#39;]){
            case 1:
                echo "上传文件大小超出配置文件规定值";
                break;
            case 2:
                echo "上传文件大小超出表单中约定值";
                break;
            case 3:
                echo "上传文件不全";
                break;
            case 4:
                echo "没有上传文件";
                break;
        }
    }else{
        if(!is_dir("./upfile/")){                                           //判断指定目录是否存在
            mkdir("./upfile/");                                             //创建目录
        }
        $path=&#39;./upfile/&#39;.time().strstr($_FILES[&#39;up_picture&#39;][&#39;name&#39;],&#39;.&#39;);//定义文件名称和存储位置
        if(is_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;])){           //判断是否通过HTTP POST上传的
            if(!move_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;],$path)){       //执行上传
                echo "上传失败";
            }else{
                echo "文件".time().$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."上传成功,大小为:".$_FILES[&#39;up_picture&#39;][&#39;size&#39;];
            }
        }else{
            echo "上传文件".$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."不合法!";
        }
    }
}
?>

Définir le nom du fichier téléchargé doit être une fonction indispensable dans le programme de téléchargement de fichiers. Grâce à cela, vous pouvez éviter le remplacement de fichiers portant le même nom qui peut conduire à l'existence de plusieurs. fichiers avec le même contenu. Pour plus d'informations, veuillez prêter attention au Exemple détaillé de la façon de redéfinir le nom dun fichier téléchargéSujet sur le traitement des fichiers PHP

[Articles connexes recommandés]

Téléchargement de fichiers PHP - explication détaillée de l'utilisation du move_uploaded_file () fonction

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn