Maison >développement back-end >Problème PHP >Comment résoudre le problème du nom de fichier tronqué obtenu par php

Comment résoudre le problème du nom de fichier tronqué obtenu par php

WJ
WJoriginal
2020-06-10 17:05:243920parcourir

Comment résoudre le problème du nom de fichier tronqué obtenu par php

Comment résoudre le problème des noms de fichiers tronqués obtenus par php ?

Je pense que de nombreux amis rencontreront un tel problème lors du développement de la fonction de téléchargement de PHP encodé en UTF8, c'est-à-dire que lors du téléchargement d'un fichier avec un nom de fichier chinois, le nom du fichier deviendra tronqué. en fait, vous pouvez utiliser la fonction iconv pour ré-encoder le nom du fichier afin de résoudre le problème

Le fichier PHP utilise l'encodage UTF-8 Si vous avez bien deviné, APACHE devrait utiliser GBK pour le traitement. Après avoir réfléchi à ce problème, je suis allé chercher des tutoriels pertinents et j'ai simplement trouvé la fonction iconv.

Prototype de fonction : string iconv ( string in_charset, string out_charset, string str )
Exemple d'utilisation : $content = iconv(“GBK”, “UTF-8”, $content);
La fonction de cet exemple est de convertir $content de l'encodage GBK en UTF-8.

Le code clé pour le problème tronqué :
Copiez le code Le code est le suivant :

$name=iconv("UTF-8","gb2312", $name);

En plus de résoudre le problème des caractères chinois tronqués dans les fichiers téléchargés, nous pouvons renommez également les fichiers téléchargés.
Exemple
Copiez le code comme suit :

$sFileName = “sda.php”;
$sOriginalFileName = $sFileName;
$sExtension = s str($sFileName, (strrpos($sFileName, ‘.’) + 1));//找到扩展名
$sExtension = strtolower($sExtension);
$sFileName = date(“YmdHis”).rand(100, 200).”.”.$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。

Voici quelques ajouts :
Solution au nom de fichier chinois tronqué dans le téléchargement php
Copiez le code comme suit :

$filepath=”upload/”;
$name=$filepath.$_FILES[“upfile”][“name”];
while(file_exists($name)){
$temp=explode(“.”,$name);//分割字符串
$name=$temp[0].”0″.”.”.$temp[1];//主文件名后面加0
}


Copiez le code comme suit :

//iconv() la fonction est la clé

if(move_uploaded_file($_FILES[“upfile”][“tmp_name”],iconv(“UTF-8″,”gb2312”,$name))){//处理…}


Mon encodage PHP est UTF- 8, la raison peut être C'est parce que le système d'exploitation est GBK !
Remarque : Mon serveur est Windows XP, Apache, et on estime que le jeu de caractères XP est GBK. Étant donné que mon code PHP est enregistré au format UTF-8, des caractères tronqués apparaîtront lors du nom du nom de fichier. Vous pouvez donc utiliser la fonction iconv() pour convertir le nom de fichier au format UTF-8 d'origine au format gbk.
Solution au nom de fichier chinois tronqué téléchargé par l'encodage php utf8
Je pense que de nombreux amis rencontreront un tel problème lorsqu'ils développeront la fonction de téléchargement de php encodé en utf8, c'est-à-dire lors du téléchargement d'un fichier avec un nom de fichier chinois , Le nom du fichier deviendra tronqué. Nous pouvons utiliser la fonction iconv pour réencoder le nom du fichier et résoudre le problème.
Copiez le code Le code est le suivant :

header("Content-Type:text/html;charset=utf-8");    
$submit = $_POST[‘submit‘];    
if(isset($submit) && trim($submit) != ‘‘){    
$file = $_FILES[‘file‘];    
if(isset($file[‘tmp_name‘])){    
     $name = iconv(‘utf-8‘,‘gb2312‘,$file[‘name‘]); //利用Iconv函数对文件名进行重新编码    
     if(move_uploaded_file($file[‘tmp_name‘],$name)){    
    echo ‘文件上传成功!‘;    
    echo ‘图片信息:‘;    
    print_r($file);    
   }    
}    
}

Références associées :tutoriel php

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