Maison >développement back-end >Problème PHP >Comment résoudre le problème des caractères tronqués lors du téléchargement du chinois en PHP

Comment résoudre le problème des caractères tronqués lors du téléchargement du chinois en PHP

藏色散人
藏色散人original
2020-09-01 09:39:382730parcourir

Comment résoudre le problème des caractères chinois tronqués téléchargés par PHP : ajoutez d'abord [enctype="multipart/form-data"] au fichier correspondant ; puis utilisez [iconv("UTF-8", "gbk " ,$name)】Transcoder de force le nom du fichier.

Comment résoudre le problème des caractères tronqués lors du téléchargement du chinois en PHP

Recommandé : "Tutoriel vidéo PHP"

À propos des fichiers de téléchargement PHP et des noms chinois tronqués

Dans la page HTML front-end, le formulaire est le suivant

Upload.html

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="2621114">
    <input type="file" required name="upload_file">
    <input type="submit" value="提交">
</form>
</body>
</html>

Note

enctype="multipart/form-data" doit être écrit, c'est pour dire au navigateur Qu'est-ce que vous téléchargez ?

02ad864ff822bc5116f29be2aa40bace

Lors du téléchargement via upload.php

<?php
if (is_uploaded_file($_FILES[&#39;upload_file&#39;][&#39;tmp_name&#39;])){
    $upfile = $_FILES[&#39;upload_file&#39;];
    //print_r($upfile);
    $name = $upfile[&#39;name&#39;];//获取文件名
    $type = $upfile[&#39;type&#39;];//文件类型
    $size = $upfile[&#39;size&#39;];//文件大小
    $tmp_name = $upfile[&#39;tmp_name&#39;];//服务器存储的临时名称
    $error = $upfile[&#39;error&#39;];//错误信息
    switch ($type){
        case &#39;image/png&#39;:
            $ok=1;
            break;
        case &#39;image/jpg&#39;:
            $ok=1;
            break;
        case &#39;image/jif&#39;:
            $ok=1;
            break;
        case &#39;image/jpeg&#39;:
            $ok=1;
            break;
    }
    if ($ok && $error == 0){
        move_uploaded_file($tmp_name,&#39;./upload/&#39;.iconv("UTF-8", "gbk",$name));
        echo &#39;文件上传成功&#39;;
    }else{
        echo &#39;文件上传失败&#39;;
    }
}

, PHP reçoit un tableau d'informations sur le fichier. Ces informations se trouvent dans le tableau super global $_FILES.

Par exemple : si le nom de la zone de saisie du fichier dans le formulaire est upload_file, alors toutes les informations sur le fichier sont incluses dans le tableau $_FILES['upload_file'].

is_uploaded_file — Détermine si le fichier a été téléchargé via HTTP POST

move_uploaded_file — Déplace le fichier téléchargé vers un nouvel emplacement

bool move_uploaded_file ( string $filename , string $destination )

Lorsque vous rencontrez un nom de fichier chinois, forcez le transcodage iconv("UTF-8", "gbk",$name) sur le nom du fichier et convertissez UTF8 en gbk, afin qu'il n'y ait pas de caractères tronqués <.>

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