Vanligvis når vi laster opp bildefil I PHP, lagres det opplastede bildet i en katalog på serveren og det respektive bildenavnet lagres i databasen. På tidspunktet for visning, er filen hentet fra serveren og bildet gjengis på nettsiden. Men, hvis du ikke ønsker å forbruke plass på serveren, kan filen lagres i databasen bare. Du kan laste opp et bilde uten å lagre filen fysisk på serveren ved Hjelp Av MySQL-databasen. Det er veldig enkelt å lagre og hente bilder fra databasen ved HJELP AV PHP og MySQL.
hvis du er bekymret for serverplassen og trenger ledig plass på serveren din, kan du sette inn bildefilen direkte i databasen uten å laste den opp til katalogen på serveren. Denne prosedyren bidrar til å optimalisere serverplass fordi bildefilen innholdet er lagret i databasen i stedet for serveren. I denne opplæringen vil vi vise deg hvordan du lagrer bildefiler i MySQL-databasen og henter bilder fra databasen ved HJELP AV PHP.
før du begynner å integrere filopplasting med databasen, ta en titt på filstrukturen.
store_retrieve_image_from_database/├── dbConfig.php├── index.php├── upload.php├── view.php└── css/ └── style.css
Sett Inn Bildefil I MySQL
MySQL har EN BLOB (binary large object) datatype som kan inneholde en stor mengde binære data. BLOB datatypen er perfekt for lagring av bildedata i databasen. I MySQL er fire BLOB-typer tilgjengelige-TINYBLOB, BLOB, MEDIUMBLOB og LONGBLOB. DEN LONGBLOB datatype er perfekt for å lagre bildefil data.
Opprett Databasetabell
for å lagre filinnholdet kreves en tabell i databasen. FØLGENDE SQL oppretter en images
tabell MED LONGBLOB datatype-feltet I MySQL-databasen.
OPPRETT TABELL `bilder` ( `id` int(11) IKKE NULL AUTO_INCREMENT, `image` longblob IKKE NULL, `opprettet` datetime IKKE NULL STANDARD current_timestamp(), PRIMÆRNØKKEL (`id`)) MOTOR=INNODB STANDARD CHARSET=utf8 COLLATE=utf8_unicode_ci;
Databasekonfigurasjon (dbConfig.php)
filen dbConfig.php
brukes til å koble til og velge databasen. Angi databasevert ($dbHost
), brukernavn ($dbUsername
), passord ($dbPassword
) og navn ($dbName
) som per MySQL database legitimasjon.
<?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);
}
Bildeopplastingsskjema
Opprett ET HTML-skjema med et filinndatafelt for å velge en bildefil for opplasting. Kontroller at < – skjemaet > – koden inneholder følgende attributter.
- metode=»post»
- enctype= «multipart / form-data»
<form action= " last opp.php" method="post" enctype="multipart/form-data"> <label>Velg Bildefil:</label> <input type="file" name="image"> <input type="submit" name="submit" value="Upload"></form>
lagre bildefil i databasen (last opp.php)
filen upload.php
håndterer bildeopplastings – og databaseinnsettingsprosessen.
- Kontroller om brukeren velger en bildefil som skal lastes opp.
- Hent innholdet i bildefilen ved tmp_name ved HJELP AV PHP file_get_contents () – funksjonen.
- Sett inn det binære innholdet i bildet i databasen ved HJELP AV PHP og MySQL.
- Vis opplastingsstatusen for bildet til brukeren.
<?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;
?>
Hente bilde fra databasen(view.php)
i filen view.php
henter vi bildeinnholdet Fra MySQL-databasen og lister dem på nettsiden.
- data -, charset-og base64-parametrene i src-attributtet brukes til å vise BILDEBLOB fra MySQL-databasen.
<?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 } ?>
Last Opp Flere Bilder og Lagre I Databasen VED HJELP AV PHP Og MySQL
Konklusjon
denne opplæringen hjelper deg å integrere filopplastingsfunksjonalitet uten å lagre filer på serveren. Du kan bruke dette eksempelskriptet til å laste opp & lagre bilder i databasen, og hente bilder fra databasen, og vise dem på nettsiden ved HJELP AV PHP og MySQL. For å gjøre bildeopplastingsprosessen brukervennlig, bruk jQuery til å laste opp filer med fremdriftslinje ved Hjelp Av Ajax og PHP.
vil du få implementeringshjelp, eller endre eller forbedre funksjonaliteten til dette skriptet? Send Inn Betalt Tjenesteforespørsel
hvis du har spørsmål om dette skriptet, send det til VÅRT QA – fellesskap-Still Spørsmål