Heim >Backend-Entwicklung >PHP-Problem >So laden Sie Dateien hoch und speichern sie in der Datenbank in PHP

So laden Sie Dateien hoch und speichern sie in der Datenbank in PHP

PHPz
PHPzOriginal
2023-04-06 08:54:001869Durchsuche

Das Hochladen von Dateien ist eine sehr häufige Funktion in modernen Anwendungen, und Webanwendungen bilden da keine Ausnahme. In Webanwendungen müssen wir Benutzern manchmal das Hochladen von Dateien wie Bildern, Dokumenten usw. ermöglichen, und PHP ist eine beliebte serverseitige Skriptsprache, die Datei-Upload-Vorgänge problemlos verarbeiten kann. In diesem Artikel erklären wir, wie man hochgeladene Dateien mit PHP in einer Datenbank speichert.

  1. HTML-Formularvorbereitung

Zunächst benötigen wir ein HTML-Formular, damit der Benutzer die hochzuladende Datei auswählen kann. Wir verwenden das -Element von HTML5, um das Formular zu erstellen. Der HTML-Code lautet wie folgt:

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

Das Aktionsattribut im Formular-Tag gibt die URL des Datei-Upload-Verarbeitungsskripts und das Methodenattribut an Gibt die zu verwendende HTTP-Methode an. Wir verwenden die POST-Methode, da wir die hochgeladene Datei auf dem Server speichern müssen. Das Attribut

enctype gibt den zu verwendenden Kodierungstyp an. Um Dateien hochladen zu können, geben wir multipart/form-data an.

-Element wird verwendet, um die hochzuladende Datei auszuwählen. Wir haben außerdem eine Schaltfläche zum Senden hinzugefügt, damit Benutzer ausgewählte Dateien auf den Server hochladen können.

  1. Serverseitiges Verarbeitungsskript

Jetzt müssen wir ein PHP-Skript schreiben, um die Anfrage zum Hochladen von Dateien zu verarbeiten. Wir werden dieses Skript in die Datei upload.php schreiben. In diesem Skript prüfen wir zunächst, ob die hochgeladene Datei existiert und ob der Upload erfolgreich war. Wenn der Upload erfolgreich ist, erhalten wir die Daten aus der hochgeladenen Datei und speichern sie in der Datenbank.

<?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 "文件上传发生错误.";
  }
}
?>

In diesem Skript gibt die Variable $target_dir das Verzeichnis der hochgeladenen Datei an. Die Variable $target_file gibt den Dateinamen an, unter dem gespeichert werden soll. Die Variable $_FILES enthält die Daten der hochgeladenen Datei. Wir verwenden die Funktion basename(), um den Dateinamen abzurufen, und die Funktion strtolower(), um die Erweiterung in Kleinbuchstaben umzuwandeln. Die Variable $uploadOk wird verwendet, um zu verfolgen, ob der Upload erfolgreich war, und die Variable $imageFileType speichert den Typ der hochgeladenen Datei.

Wir verwenden die Funktion getimagesize(), um zu prüfen, ob die hochgeladene Datei vom Typ Bild ist. Wenn es sich um einen Bildtyp handelt, geben wir den MIME-Typ der Datei aus. Wenn nicht, setzen wir die Variable $uploadOk auf 0, um anzuzeigen, dass der Upload fehlgeschlagen ist.

Als nächstes prüfen wir, ob die Datei bereits existiert. Wenn sie vorhanden ist, setzen Sie die Variable $uploadOk auf 0, um anzuzeigen, dass der Upload fehlgeschlagen ist.

Wir prüfen auch, ob die Dateigröße den Anforderungen entspricht. Wenn es größer als 500 KB ist, setzen Sie die Variable $uploadOk auf 0, um anzuzeigen, dass der Upload fehlgeschlagen ist.

Abschließend prüfen wir, ob der Dateityp den Anforderungen entspricht. Jetzt werden nur noch die Typen JPG, JPEG, PNG und GIF unterstützt. Wenn nicht, setzen Sie die Variable $uploadOk auf 0, um anzuzeigen, dass der Upload fehlgeschlagen ist.

Wenn alle Prüfungen erfolgreich sind, versuchen Sie, die hochgeladene Datei in das angegebene Verzeichnis zu verschieben. Bei erfolgreicher Verschiebung wird eine Meldung ausgegeben, dass die Datei hochgeladen wurde und die Daten der hochgeladenen Datei werden in der Datenbank gespeichert. Andernfalls wird eine Fehlermeldung ausgegeben.

  1. Speichern Sie die Dateidaten in der Datenbank

Nach dem erfolgreichen Hochladen der Datei müssen wir die Dateidaten in der Datenbank speichern. In diesem Beispiel erstellen wir eine Datenbanktabelle mit drei Feldern: id, fileName und fileData.

Zur Implementierung dieser Funktion sind eine Datenbankverbindung und eine $sql-Anweisung erforderlich. Die $sql-Anweisung muss sowohl den Dateinamen als auch die Dateidaten einfügen. In PHP können wir die Funktionen fopen(), fread() und fclose() verwenden, um Dateidaten zu verarbeiten. Um also Dateidaten in die $sql-Anweisung einzufügen, müssen wir zuerst die Datei mit der Funktion fopen() öffnen, dann die Daten mit der Funktion fread() aus der Datei lesen und schließlich die Datei mit der Funktion fclose() schließen. Funktion. Der Code lautet wie folgt:

<?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();
?>

In diesem Skript öffnen wir die Datei und lesen alle Daten der Datei mit der Funktion fread(). Diese Daten werden in der Variablen $fileData gespeichert und die neuen hochgeladenen Dateidaten werden in die $sql-Anweisung eingefügt.

Jetzt haben wir die Funktion zum Speichern hochgeladener Dateien in der Datenbank implementiert.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie man mit PHP Dateien hochlädt und Dateidaten in einer Datenbank speichert. Wir begannen mit einem HTML-Formular, schrieben dann ein serverseitiges Verarbeitungsskript und speicherten die hochgeladenen Dateidaten in einer Datenbank. Dieses Beispiel demonstriert einen vollständigen Prozess des Hochladens und Speicherns von Dateien in der Datenbank und dürfte für Webentwickler nützlich sein.

Das obige ist der detaillierte Inhalt vonSo laden Sie Dateien hoch und speichern sie in der Datenbank in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn