általában, amikor képfájlt töltünk fel PHP-ben, a feltöltött kép a szerver könyvtárában tárolódik, és a megfelelő képnév az adatbázisban tárolódik. A megjelenítés időpontjában a fájl lekérésre kerül a szerverről, és a kép megjelenik a weboldalon. De ha nem akarja elfogyasztani a szerver helyét, akkor a fájl csak az adatbázisban tárolható. Feltölthet egy képet anélkül, hogy a fájlt fizikailag tárolná a kiszolgálón a MySQL adatbázis segítségével. Nagyon könnyű tárolni és letölteni a képeket az adatbázisból a PHP és a MySQL segítségével.
ha aggódik a szerverterület miatt, és szabad helyre van szüksége a szerveren, akkor a képfájlt közvetlenül az adatbázisba helyezheti anélkül, hogy feltöltené a szerver könyvtárába. Ez az eljárás segít a kiszolgálótér optimalizálásában, mivel a képfájl tartalmát nem a kiszolgáló, hanem az adatbázis tárolja. Ebben az oktatóanyagban megmutatjuk, hogyan tárolhatja a képfájlokat a MySQL adatbázisba, és hogyan töltheti le a képeket az adatbázisból a PHP segítségével.
mielőtt elkezdené integrálni a fájlfeltöltést az adatbázisba, nézze meg a fájlszerkezetet.
store_retrieve_image_from_database/├── dbConfig.php├── index.php├── upload.php├── view.php└── css/ └── style.css
képfájl beszúrása a MySQL-be
a MySQL BLOB (binary large object) adattípussal rendelkezik, amely nagy mennyiségű bináris adatot képes tárolni. A BLOB adattípus tökéletes a képadatok tárolására az adatbázisban. A MySQL – ben négy BLOB típus érhető el-TINYBLOB, BLOB, MEDIUMBLOB és LONGBLOB. A LONGBLOB adattípus tökéletes a képfájl adatainak tárolására.
adatbázis-tábla létrehozása
a fájl tartalmának tárolásához egy tábla szükséges az adatbázisban. A következő SQL létrehoz egy images
táblát a LONGBLOB adattípus mezővel a MySQL adatbázisban.
CREATE TABLE `images ' ('id' int (11) NOT NULL AUTO_INCREMENT, `image` longblob null, `created` datetime NOT null DEFAULT current_timestamp (), elsődleges kulcs (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
adatbázis konfiguráció (dbConfig.php)
a dbConfig.php
fájl az adatbázis csatlakoztatására és kiválasztására szolgál. Adja meg az adatbázis gazdagépét ($dbHost
), felhasználónevét ($dbUsername
), jelszavát ($dbPassword
) és nevét ($dbName
) a MySQL adatbázis hitelesítő adatai szerint.
<?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);
}
képfeltöltési űrlap
hozzon létre egy HTML űrlapot egy fájlbeviteli mezővel a feltöltendő képfájl kiválasztásához. Győződjön meg arról, hogy a <form> címke a következő attribútumokat tartalmazza.
- method= “post”
- enctype= “többrészes / form-adatok”
<form action= " Feltöltés.php" method="post" enctype="multipart/form-data"> <címke>Képfájl kiválasztása:</címke> <input type="file" name="image"> <input type="submit" name="submit" value="feltöltés"></form>
tárolja a képfájlt az adatbázisban (feltöltés.php)
a upload.php
fájl kezeli a képfeltöltési és adatbázis-beillesztési folyamatot.
- ellenőrizze, hogy a felhasználó kiválaszt-e egy feltöltendő képfájlt.
- töltse le a képfájl tartalmát a TMP_NAME segítségével a PHP file_get_contents() függvény segítségével.
- helyezze be a kép bináris tartalmát az adatbázisba PHP és MySQL használatával.
- a kép feltöltési állapotának megjelenítése a felhasználónak.
<?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;
?>
Kép letöltése az adatbázisból (nézet.php)
a view.php
fájlban lekérjük a kép tartalmát a MySQL adatbázisból, és felsoroljuk azokat a weboldalon.
- az SRC attribútumban található adatok, karakterkészlet és base64 paraméterek a MySQL adatbázisból származó KÉPBLOB megjelenítésére szolgálnak.
<?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 } ?>
töltsön fel több képet és tárolja az adatbázisban PHP és MySQL használatával
következtetés
ez az oktatóanyag segít a fájlfeltöltési funkciók integrálásában anélkül, hogy fájlokat tárolna a szerveren. Ezzel a példakóddal & képeket tölthet fel az adatbázisban, képeket tölthet le az adatbázisból, és megjelenítheti azokat a weboldalon PHP és MySQL használatával. Ahhoz, hogy a képfeltöltési folyamat felhasználóbarát legyen, használja a jQuery-t az Ajax és a PHP használatával.
végrehajtási segítséget szeretne kapni, vagy módosítani vagy javítani szeretné a szkript működését? Küldje fizetett szolgáltatás kérés
ha bármilyen kérdése van ezzel a script, küldje el a QA közösség-Ask Question