Полное руководство: загрузка изображений из MySQL с помощью PHP

В этой статье блога мы рассмотрим различные способы загрузки изображений, хранящихся в базе данных MySQL, с помощью PHP. Мы предоставим примеры кода для каждого метода, что позволит вам выбрать тот, который лучше всего соответствует вашим требованиям. Давайте начнем!

Метод 1: прямой вывод изображения
Один из самых простых способов загрузки изображения из MySQL — прямой вывод содержимого изображения в браузер.

<?php
// Assuming you have established a MySQL connection
$imageId = $_GET['image_id']; // Get the image ID from the request
$query = "SELECT image_data, image_mime_type FROM images WHERE id = $imageId";
$result = mysqli_query($connection, $query);
if ($result && mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_assoc($result);
    $imageData = $row['image_data'];
    $imageMimeType = $row['image_mime_type'];
    header("Content-type: $imageMimeType");
    echo $imageData;
}
?>

Метод 2: сохранение изображения на сервере
Если вы предпочитаете сохранить файл изображения на сервере перед загрузкой, вы можете использовать следующий код.

<?php
// Assuming you have established a MySQL connection
$imageId = $_GET['image_id']; // Get the image ID from the request
$query = "SELECT image_data, image_mime_type FROM images WHERE id = $imageId";
$result = mysqli_query($connection, $query);
if ($result && mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_assoc($result);
    $imageData = $row['image_data'];
    $imageMimeType = $row['image_mime_type'];
    $filename = "image_$imageId." . explode('/', $imageMimeType)[1];
    $filePath = "/path/to/save/$filename";
    file_put_contents($filePath, $imageData);
    // Download the file
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . $filename);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filePath));
    ob_clean();
    flush();
    readfile($filePath);
    exit;
}
?>

Метод 3: кодирование Base64
Другой подход заключается в кодировании данных изображения в формате Base64 и встраивании их в URI данных. Этот метод позволяет напрямую загрузить изображение по ссылке.

<?php
// Assuming you have established a MySQL connection
$imageId = $_GET['image_id']; // Get the image ID from the request
$query = "SELECT image_data, image_mime_type FROM images WHERE id = $imageId";
$result = mysqli_query($connection, $query);
if ($result && mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_assoc($result);
    $imageData = $row['image_data'];
    $imageMimeType = $row['image_mime_type'];
    $base64Image = base64_encode($imageData);
    $dataUri = "data:$imageMimeType;base64,$base64Image";
    echo "<a href=\"$dataUri\" download>Download Image</a>";
}
?>

В этой статье мы рассмотрели три различных метода загрузки изображений из базы данных MySQL с помощью PHP. Первый метод напрямую выводит содержимое изображения в браузер, второй метод сохраняет изображение на сервере перед загрузкой, а третий метод кодирует данные изображения в формате Base64 и предоставляет ссылку для загрузки. Выберите метод, который лучше всего соответствует вашим требованиям, и интегрируйте его в свое PHP-приложение.