Maison  >  Article  >  développement back-end  >  Comment télécharger des fichiers et les enregistrer dans la base de données en php

Comment télécharger des fichiers et les enregistrer dans la base de données en php

PHPz
PHPzoriginal
2023-04-06 08:54:001839parcourir

Le téléchargement de fichiers est une fonctionnalité très courante dans les applications modernes, et les applications Web ne font pas exception. Dans les applications Web, nous devons parfois permettre aux utilisateurs de télécharger des fichiers tels que des images, des documents, etc., et PHP est un langage de script côté serveur populaire qui peut facilement gérer les opérations de téléchargement de fichiers. Dans cet article, nous expliquerons comment enregistrer les fichiers téléchargés dans une base de données à l'aide de PHP.

  1. Préparation du formulaire HTML

Tout d'abord, nous avons besoin d'un formulaire HTML pour que l'utilisateur puisse sélectionner le fichier à télécharger. Nous utilisons l'élément de HTML5 pour créer le formulaire. Le code HTML est le suivant :

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="上传文件" name="submit">
</form>

L'attribut action dans la balise form spécifie l'URL du script de traitement de téléchargement de fichier et l'attribut méthode. spécifie la méthode HTTP à utiliser. Nous utilisons la méthode POST car nous devons enregistrer le fichier téléchargé sur le serveur. L'attribut

enctype spécifie le type d'encodage à utiliser. Pour pouvoir télécharger des fichiers, nous spécifions multipart/form-data.

est utilisé pour sélectionner le fichier à télécharger. Nous avons également ajouté un bouton de soumission afin que les utilisateurs puissent télécharger les fichiers sélectionnés sur le serveur.

  1. Script de traitement côté serveur

Nous devons maintenant écrire un script PHP pour gérer la demande de téléchargement de fichiers. Nous écrirons ce script dans le fichier upload.php. Dans ce script, nous vérifierons d'abord si le fichier téléchargé existe et si le téléchargement a réussi. Si le téléchargement réussit, nous obtiendrons les données du fichier téléchargé et les enregistrerons dans la base de données.

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "文件是一个图片类型 - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "文件不是一个图片类型.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "已存在同名文件.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "文件太大了.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "只支持JPG, JPEG, PNG和GIF文件类型.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "文件上传失败.";

// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "文件 ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). "已经被上传.";
    
    // 保存文件数据到数据库中 
    
  } else {
    echo "文件上传发生错误.";
  }
}
?>

Dans ce script, la variable $target_dir spécifie le répertoire du fichier téléchargé. La variable $target_file spécifie le nom du fichier dans lequel enregistrer. La variable $_FILES contient les données du fichier téléchargé. Nous utilisons la fonction basename() pour obtenir le nom du fichier et la fonction strtolower() pour convertir l'extension en minuscules. La variable $uploadOk est utilisée pour savoir si le téléchargement a réussi et la variable $imageFileType stocke le type de fichier téléchargé.

Nous utilisons la fonction getimagesize() pour vérifier si le fichier téléchargé est de type image. S'il s'agit d'un type d'image, nous afficherons le type MIME du fichier. Sinon, nous définirons la variable $uploadOk sur 0, indiquant que le téléchargement a échoué.

Ensuite, nous vérifions si le fichier existe déjà. Si elle existe, définissez la variable $uploadOk sur 0, indiquant que le téléchargement a échoué.

Nous vérifions également si la taille du fichier répond aux exigences. S'il fait plus de 500 Ko, définissez la variable $uploadOk sur 0, indiquant que le téléchargement a échoué.

Enfin, nous vérifions si le type de fichier répond aux exigences. Désormais, seuls les types JPG, JPEG, PNG et GIF sont pris en charge. Sinon, définissez la variable $uploadOk sur 0, indiquant que le téléchargement a échoué.

Si toutes les vérifications réussissent, essayez de déplacer le fichier téléchargé vers le répertoire spécifié. Si le déplacement réussit, un message indiquant que le fichier a été téléchargé est affiché et les données du fichier téléchargé sont enregistrées dans la base de données. Sinon, un message d'erreur s'affiche.

  1. Enregistrez les données du fichier dans la base de données

Après avoir téléchargé avec succès le fichier, nous devons enregistrer les données du fichier dans la base de données. Dans cet exemple, nous créons une table de base de données avec 3 champs : id, fileName et fileData.

Une connexion à la base de données et une instruction $sql sont nécessaires pour implémenter cette fonction. L'instruction $sql doit insérer à la fois le nom du fichier et les données du fichier. En PHP, nous pouvons utiliser les fonctions fopen(), fread() et fclose() pour traiter les données des fichiers. Ainsi, pour insérer des données de fichier dans l'instruction $sql, nous devons d'abord utiliser la fonction fopen() pour ouvrir le fichier, puis utiliser la fonction fread() pour lire les données du fichier, et enfin utiliser la fonction fclose() pour fermez le fichier. Le code est le suivant :

<?php
$conn = new mysqli("localhost", "root", "", "test");
if ($conn->connect_error) {
  die("连接数据库失败: " . $conn->connect_error);
}

// Check server connection
if ($conn->connect_error) {
  die("连接数据库失败: " . $conn->connect_error);
} 

$fileName = $_FILES["fileToUpload"]["name"];
$fileData = "";

// Open the file for reading
$file = fopen($target_file, "r");

// Read from the file until the end
while(!feof($file)) {
  $fileData .= fread($file, 8192);
}

// Close the file
fclose($file);

// Prepare SQL statement
$sql = "INSERT INTO upload_files (fileName, fileData) VALUES ('$fileName', '$fileData')";

if ($conn->query($sql) === TRUE) {
  echo "上传成功!";
} else {
  echo "上传失败:" . $conn->error;
}

$conn->close();
?>

Dans ce script, nous ouvrons le fichier et lisons toutes les données du fichier à l'aide de la fonction fread(). Ces données sont stockées dans la variable $fileData et les nouvelles données du fichier téléchargé sont insérées dans l'instruction $sql.

Maintenant, nous avons implémenté la fonction de sauvegarde des fichiers téléchargés dans la base de données.

Résumé

Dans cet article, nous avons présenté comment télécharger des fichiers et enregistrer les données des fichiers dans une base de données à l'aide de PHP. Nous avons commencé avec un formulaire HTML, puis avons écrit un script de traitement côté serveur et enregistré les données du fichier téléchargé dans une base de données. Cet exemple montre un processus complet de téléchargement et d'enregistrement de fichiers dans la base de données et devrait être utile aux développeurs Web.

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