in het algemeen, wanneer we image bestand uploaden in PHP, de geüploade image wordt opgeslagen in een directory van de server en de respectievelijke image naam wordt opgeslagen in de database. Op het moment van weergave, het bestand wordt opgehaald van de server en de afbeelding wordt weergegeven op de webpagina. Maar als u de ruimte van de server niet wilt gebruiken, kan het bestand alleen in de database worden opgeslagen. U kunt een afbeelding uploaden zonder het bestand fysiek op te slaan op de server met behulp van de MySQL database. Het is heel gemakkelijk om beelden op te slaan en op te halen uit de database met behulp van PHP en MySQL.
als u zich zorgen maakt over de serverruimte en vrije ruimte op uw server nodig hebt, kunt u het afbeeldingsbestand direct in de database invoegen zonder het naar de map van de server te uploaden. Deze procedure helpt om de serverruimte te optimaliseren omdat de inhoud van het afbeeldingsbestand in de database wordt opgeslagen in plaats van op de server. In deze tutorial laten we u zien hoe u afbeeldingsbestanden opslaat in de MySQL-database en afbeeldingen uit de database haalt met behulp van PHP.
voordat u begint met het integreren van het uploaden van bestanden met de database, kijk dan eens naar de bestandsstructuur.
store_retrieve_image_from_database/├── dbConfig.php├── index.php├── upload.php├── view.php└── css/ └── style.css
afbeeldingsbestand invoegen in MySQL
MySQL heeft een BLOB (binary large object) gegevenstype dat een grote hoeveelheid binaire gegevens kan bevatten. Het BLOB data type is perfect voor het opslaan van beeldgegevens in de database. In MySQL zijn vier BLOB types beschikbaar – TINYBLOB, BLOB, medium BLOB en LONGBLOB. Het LONGBLOB-gegevenstype is perfect om de gegevens van het afbeeldingsbestand op te slaan.
databasetabel
om de inhoud van het bestand op te slaan, is een tabel vereist in de database. De volgende SQL maakt een images
tabel met het LONGBLOB data type veld in de MySQL database.
tabel aanmaken ' images` (`id` int (11) NOT NULL AUTO_INCREMENT, `image` longblob NOT NULL, `created` datetime NOT NULL DEFAULT current_timestamp (), PRIMARY KEY ('id')) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Database Configuration (dbConfig.php)
het dbConfig.php
bestand wordt gebruikt om verbinding te maken en de database te selecteren. Specificeer de database host ($dbHost
), gebruikersnaam ($dbUsername
), wachtwoord ($dbPassword
), en naam ($dbName
) volgens uw MySQL database referenties.
<?php
// Database configuration
$dbHost = "localhost";
$dbUsername = "root";
$dbPassword = "root";
$dbName = "codexworld";
// Create database connection
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
// Check connection
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
formulier voor het uploaden van afbeeldingen
Maak een HTML-formulier aan met een invoerveld voor het bestand om een afbeeldingsbestand te selecteren om te uploaden. Zorg ervoor dat de tag <form> de volgende kenmerken bevat.
- method= “post”
- enctype= “multipart/form-data”
<form action= " uploaden.php " method=" post"enctype="multipart/form-data" > <label>Selecteer Image File:< / label> <input type= "file" name = "image" > <input type= "submit" name=" submit"value = "Upload" ></form>
Image File opslaan in Database (upload.php)
het upload.php
bestand behandelt het upload-en database-invoegproces.
- Controleer of de gebruiker een te uploaden afbeeldingsbestand selecteert.
- haal de inhoud van het afbeeldingsbestand op met de tmp_name met behulp van de functie PHP file_get_contents ().
- plaats de binaire inhoud van de afbeelding in de database met behulp van PHP en MySQL.
- Toon de status van het uploaden van de afbeelding naar de gebruiker.
<?php
// Include the database configuration file
require_once 'dbConfig.php';
// If file upload form is submitted
$status = $statusMsg = '';
if(isset($_POST)){
$status = 'error';
if(!empty($_FILES)) {
// Get file info
$fileName = basename($_FILES);
$fileType = pathinfo($fileName, PATHINFO_EXTENSION);
// Allow certain file formats
$allowTypes = array('jpg','png','jpeg','gif');
if(in_array($fileType, $allowTypes)){
$image = $_FILES;
$imgContent = addslashes(file_get_contents($image));
// Insert image content into database
$insert = $db->query("INSERT into images (image, created) VALUES ('$imgContent', NOW())");
if($insert){
$status = 'success';
$statusMsg = "File uploaded successfully.";
}else{
$statusMsg = "File upload failed, please try again.";
}
}else{
$statusMsg = 'Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.';
}
}else{
$statusMsg = 'Please select an image file to upload.';
}
}
// Display status message
echo $statusMsg;
?>
afbeelding ophalen uit database (bekijken.php)
In het view.php
bestand, zullen we de inhoud van de afbeelding uit de MySQL database ophalen en ze op de web pagina weergeven.
- de data -, tekenset-en base64-parameters in het src-attribuut worden gebruikt om afbeeldingsblob uit de MySQL-database weer te geven.
<?php
// Include the database configuration file
require_once 'dbConfig.php';
// Get image data from database
$result = $db->query("SELECT image FROM images ORDER BY id DESC");
?><?php if($result->num_rows > 0){ ?>
<div class="gallery">
<?php while($row = $result->fetch_assoc()){ ?>
<img src="data:image/jpg;charset=utf8;base64,<?php echo base64_encode($row); ?>" />
<?php } ?>
</div>
<?php }else{ ?>
<p class="status error">Image(s) not found...</p>
<?php } ?>
meerdere afbeeldingen uploaden en opslaan in de Database met behulp van PHP en MySQL
conclusie
deze tutorial helpt u om de functionaliteit van het uploaden van bestanden te integreren zonder bestanden op de server op te slaan. U kunt dit voorbeeldscript gebruiken om & afbeeldingen in de database op te slaan, afbeeldingen uit de database op te halen en op de webpagina weer te geven met behulp van PHP en MySQL. Om het uploadproces van de afbeelding gebruiksvriendelijk te maken, gebruikt u jQuery om bestanden met voortgangsbalk te uploaden met behulp van Ajax en PHP.
wilt u implementatiehulp krijgen, of de functionaliteit van dit script aanpassen of verbeteren? Submit Paid service Request
Als u vragen heeft over dit script, stuur het dan naar onze QA community-stel Vraag