Maison  >  Article  >  développement back-end  >  Exemple d'analyse d'un fichier PHP unique et de plusieurs téléchargements de fichiers

Exemple d'analyse d'un fichier PHP unique et de plusieurs téléchargements de fichiers

小云云
小云云original
2017-12-14 09:37:591434parcourir

Cet article vous donne principalement une analyse détaillée du code et des solutions aux problèmes pour le téléchargement de fichiers uniques et le téléchargement de fichiers multiples en PHP. Étudions ensemble pour référence. J'espère que cela pourra aider tout le monde.

Quand $_FILES est-il un tableau vide ?

Lorsque l'enctype de soumission du formulaire n'est pas égal à multipart/form-data dans le fichier de configuration php.ini, file_uploads = Off et la taille du fichier téléchargé > la taille de téléchargement maximale configurée dans le fichier de configuration php.ini

Tant que $_FILES est un tableau vide, les problèmes ci-dessus peuvent survenir et doivent être résolus !

Si vous cliquez immédiatement sur le bouton "Télécharger" sans sélectionner de fichier, $_FILES sera un tableau avec des éléments. Chaque attribut de l'élément est une chaîne vide et l'attribut d'erreur est 4

Téléchargement d'un seul fichier

Structure de données $_FILES

array(
  'filename' => array(
    'name' => 'xxx.png',
    'type' => 'image/png',
    'size' => 2548863,
    'tmp_name' => '/img/sdsdsd.png',
    'error' => 0
  )
)
Qu'il s'agisse d'un seul fichier ou de plusieurs téléchargements de fichiers, il y aura 5 attributs fixes : nom / taille / type / tmp_name / erreur

Téléchargement de fichiers multiples

Par rapport au téléchargement de fichiers uniques, le téléchargement de fichiers multiples est beaucoup plus compliqué à traiter. Deux formes de téléchargement de fichiers multiples sur le front-end

<.>$_FILES sur le back-end Les structures de données correspondantes sont différentes
//name相同
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt[]"/>
  <input type="file" name="wt[]"/>
  <input type="submit" value="提交"/>
</form>

//name不同(简单点)
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt"/>
  <input type="file" name="mmt"/>
  <input type="submit" value="提交"/>
</form>

Objectif de l'erreur de champ
//name相同
array (size=1)
 'wt' => 
  array (size=5)
   'name' => 
    array (size=2)
     0 => string '新建文本文档 (2).txt' (length=26)
     1 => string '新建文本文档.txt' (length=22)
   'type' => 
    array (size=2)
     0 => string 'text/plain' (length=10)
     1 => string 'text/plain' (length=10)
   'tmp_name' => 
    array (size=2)
     0 => string 'C:\Windows\php1D64.tmp' (length=22)
     1 => string 'C:\Windows\php1D65.tmp' (length=22)
   'error' => 
    array (size=2)
     0 => int 0
     1 => int 0
   'size' => 
    array (size=2)
     0 => int 0
     1 => int 1820

//name不同(简单点)
array (size=2)
 'wt' => 
  array (size=5)
   'name' => string '新建文本文档 (2).txt' (length=26)
   'type' => string 'text/plain' (length=10)
   'tmp_name' => string 'C:\Windows\php39C7.tmp' (length=22)
   'error' => int 0
   'size' => int 0
 'mmt' => 
  array (size=5)
   'name' => string '新建文本文档.txt' (length=22)
   'type' => string 'text/plain' (length=10)
   'tmp_name' => string 'C:\Windows\php39D8.tmp' (length=22)
   'error' => int 0
   'size' => int 1820

Valeur : 1 Le fichier téléchargé dépasse la valeur limitée par l'option upload_max_filesize dans php.ini .

Valeur : 2 La taille du fichier téléchargé dépasse la valeur spécifiée par l'option MAX_FILE_SIZE dans le formulaire HTML.

Valeur : 3 Le fichier n'a été que partiellement téléchargé.

Valeur : 4 Aucun fichier n'a été téléchargé. Valeur : 5 La taille du fichier téléchargé est 0.

Recommandations associées :

Une classe de téléchargement de fichier PHP instance Sharing_php

implémentation php A méthode de téléchargement de plusieurs fichiers

Un exemple de la façon d'implémenter des classes de téléchargement de fichiers communes en 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