Maison > développement back-end > tutoriel php > PHP utilise largement les fonctions de tableau pour réaliser plusieurs téléchargements de fichiers

PHP utilise largement les fonctions de tableau pour réaliser plusieurs téléchargements de fichiers

黄舟
Libérer: 2023-03-07 11:50:02
original
2693 Les gens l'ont consulté

Dans le développement de programmes PHP, le téléchargement de fichiers est une fonction très couramment utilisée et constitue également l'une des compétences nécessaires pour les programmeurs PHP. Heureusement, implémenter la fonction de téléchargement de fichiers en PHP est beaucoup plus simple que dans des langages tels que Java et C#. Ci-dessous, nous combinons des exemples de code spécifiques pour présenter en détail comment implémenter les fonctions de téléchargement de fichiers et de téléchargement multi-fichiers via PHP.

Pour utiliser PHP pour implémenter la fonction de téléchargement de fichiers, nous écrivons d'abord deux fichiers php : index.php et upload.php. Parmi eux, la page index.php est utilisée pour soumettre la demande de formulaire de téléchargement de fichier, et la page upload.php est utilisée pour recevoir le fichier téléchargé et le traiter en conséquence.

Tout d'abord, écrivons un simple fichier index.php Comme il s'agit principalement de code html, c'est relativement simple, je n'entrerai donc pas dans les détails. Le code détaillé de la page index.php est. comme suit :

<?php
//设置编码为UTF-8,以避免中文乱码
header(&#39;Content-Type:text/html;charset=utf-8&#39;);
?>
<!DOCTYPE html>
<html>
<head>
    <title>文件上传表单页面</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    文件1:<input name="upload_file1" type="file" /><br/>
    文件2:<input name="upload_file2" type="file" /><br/>
    <input type="submit" value="上传" />
</form>
</body>
</html>
Copier après la connexion

Il convient de noter que puisque le protocole HTTP a été conçu à l'origine, il ne prenait pas en charge la fonction de téléchargement de fichiers. La valeur par défaut de l'attribut encrypt du formulaire est application/x-. www-form-urlencoded, qui ne peut être utilisé que pour la soumission du formulaire général. Si le formulaire soumis contient des fichiers qui doivent être téléchargés, nous devons modifier la valeur de l'attribut enctype en multipart/form-data pour implémenter la fonction de téléchargement de fichiers. De plus, la valeur de l'attribut méthode doit être post.

Ensuite, nous continuons à écrire le code du fichier upload.php.

<?php
//设置编码为UTF-8,以避免中文乱码
header(&#39;Content-Type:text/html;charset=utf-8&#39;);
$first_file = $_FILES[&#39;upload_file1&#39;];  //获取文件1的信息
$second_file = $_FILES[&#39;upload_file2&#39;]; //获取文件2的信息
$upload_dir = &#39;D:/upload/&#39;;   //保存上传文件的目录//处理上传的文件1
if ($first_file[&#39;error&#39;] == UPLOAD_ERR_OK){
    //上传文件1在服务器上的临时存放路径
    $temp_name = $first_file[&#39;tmp_name&#39;];
    //上传文件1在客户端计算机上的真实名称
    $file_name = $first_file[&#39;name&#39;];
    //移动临时文件夹中的文件1到存放上传文件的目录,并重命名为真实名称
    move_uploaded_file($temp_name, $upload_dir.$file_name);
    echo &#39;[文件1]上传成功!<br/>&#39;;
}else{
    echo &#39;[文件1]上传失败!<br/>&#39;;
}
//处理上传的文件2
if ($second_file[&#39;error&#39;] == UPLOAD_ERR_OK){
    //上传文件2在服务器上的临时存放路径
    $temp_name = $second_file[&#39;tmp_name&#39;];
    //上传文件2在客户端计算机上的真实名称
    $file_name = $second_file[&#39;name&#39;];
    //移动临时文件夹中的文件2到存放上传文件的目录,并重命名为真实名称
    move_uploaded_file($temp_name, $upload_dir.$file_name);
    echo &#39;[文件2]上传成功!<br/>&#39;;
}else {
    echo &#39;[文件2]上传失败!<br/>&#39;;
}
?>
Copier après la connexion

En PHP, lorsque la demande de formulaire soumise par le client du navigateur contient un fichier téléchargé, PHP stockera temporairement le fichier téléchargé dans un répertoire temporaire (dans les systèmes d'exploitation Windows, le répertoire temporaire par défaut est généralement C :/Windows/Temp), puis les informations pertinentes sur le fichier téléchargé sont stockées dans la super variable globale $_FILES. Par conséquent, il nous suffit d'obtenir les informations sur le fichier téléchargé via le tableau $_FILES, puis d'y effectuer les opérations de traitement correspondantes. Examinons ensuite les détails de l'utilisation de la fonction print_r() pour générer la super variable globale $_FILES lors du téléchargement de deux fichiers image A.gif et B.gif via le navigateur :

Array ( [upload_file1] => Array ( 
		[name] => A.gif (客户端上传时的真实文件名称)
		[type] => image/gif (文件的类型)
		[tmp_name] => C:\Windows\Temp\php9803.tmp (文件上传到PHP服务器后临时存放的路径)
		[error] => 0 (错误信息,0表示没有错误)
		[size] => 87123 (文件大小,单位为字节)
		)
        [upload_file2] => Array (
		[name] => B.gif
		[type] => image/gif
		[tmp_name] => C:\Windows\Temp\php9813.tmp
		[error] => 0
		[size] => 93111
		)
)
Copier après la connexion

dans ce qui précède Dans l'exemple, les noms de paramètres des deux fichiers que nous avons téléchargés sont upload_file1 et upload_file2. Maintenant, nous laissons plusieurs fichiers du formulaire utiliser le même nom de paramètre upload_file et soumettons à nouveau les deux fichiers qui viennent d'être téléchargés sous la forme de tableaux de paramètres pour le téléchargement. À ce stade, nous devons modifier les deux champs file file de la page index.php avec le code html suivant :

文件1:<input name="upload_file[]" type="file" /><br/>
文件2:<input name="upload_file[]" type="file" /><br/>
Copier après la connexion

De plus, nous devons également apporter les modifications correspondantes à la page upload.php. :

<?php
//设置编码为UTF-8,以避免中文乱码
header(&#39;Content-Type:text/html;charset=utf-8&#39;);
$fileArray = $_FILES[&#39;upload_file&#39;];//获取多个文件的信息,注意:这里的键名不包含[]
$upload_dir = &#39;D:/upload/&#39;; //保存上传文件的目录
foreach ( $fileArray[&#39;error&#39;] as $key => $error) {
    if ( $error == UPLOAD_ERR_OK ) { //PHP常量UPLOAD_ERR_OK=0,表示上传没有出错
        $temp_name = $fileArray[&#39;tmp_name&#39;][$key];
        $file_name = $fileArray[&#39;name&#39;][$key];
        move_uploaded_file($temp_name, $upload_dir.$file_name);
        echo &#39;上传[文件&#39;.$key.&#39;]成功!<br/>&#39;;
    }else {
        echo &#39;上传[文件&#39;.$key.&#39;]失败!<br/>&#39;;
    }
}
?>
Copier après la connexion

De même, nous utilisons la fonction print_r() pour afficher les détails de la variable superglobale $_FILES dans l'exemple ci-dessus :

Array ( 
	[upload_file] => Array ( 
		[name] => Array ( 
			[0] => A.gif
			[1] => B.gif			
			) 
		[type] => Array ( 
			[0] => image/gif
			[1] => image/gif			
			) 
		[tmp_name] => Array (
			[0] => C:\Windows\Temp\php87B9.tmp
			[1] => C:\Windows\Temp\php87BA.tmp
			) 
		[error] => Array ( 
			[0] => 0
			[1] => 0			
			) 
		[size] => Array ( 
			[0] => 87123
			[1] => 93111			
			)
		)
)
Copier après la connexion

Remarque 1 : Dans la configuration par défaut de PHP Si la taille du fichier téléchargé dépasse une certaine plage, une erreur se produira

Remarque 2 : Le code PHP ci-dessus pour le traitement des téléchargements de fichiers n'est qu'un simple exemple d'introduction et ne peut pas être utilisé directement comme code formel car il existe de nombreux facteurs de sécurité qui nécessitent une attention supplémentaire qui n'ont pas été pris en compte, tels que : le type de fichier, la taille du fichier et les noms en double des fichiers téléchargés, etc.

Remarque 3 : Si le nom du fichier téléchargé contient des caractères chinois, cela peut entraîner des noms de fichiers tronqués. À ce stade, vous devez utiliser la fonction iconv() pour convertir l'encodage du nom de fichier


<.>

【Tutoriels recommandés】

1. Sujets connexes recommandés : "

tableau php (Array)"



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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal