yleensä, kun lataamme kuvatiedoston PHP: hen, ladattu kuva tallennetaan palvelimen hakemistoon ja vastaava kuvan nimi tallennetaan tietokantaan. Näyttöhetkellä tiedosto noudetaan palvelimelta ja kuva renderoidaan verkkosivulle. Mutta, jos et halua kuluttaa tilaa palvelimen, tiedosto voidaan tallentaa tietokantaan vain. Voit ladata kuvan tallentamatta tiedostoa fyysisesti palvelimelle MySQL-tietokannan avulla. Se on erittäin helppo tallentaa ja hakea kuvia tietokannasta PHP ja MySQL.
jos olet huolissasi palvelintilasta ja tarvitset vapaata tilaa palvelimellasi, voit lisätä kuvatiedoston suoraan tietokantaan lataamatta sitä palvelimen hakemistoon. Tämä menettely auttaa optimoimaan palvelintilaa, koska kuvatiedoston sisältö tallennetaan tietokantaan palvelimen sijaan. Tässä opetusohjelma, näytämme, miten tallentaa kuvatiedostoja MySQL tietokantaan ja hakea kuvia tietokannasta PHP.
ennen kuin ryhdytään integroimaan tiedostojen latausta tietokantaan, tutustu tiedostorakenteeseen.
store_retrieve_image_from_database/├── dbConfig.php├── index.php├── upload.php├── view.php└── css/ └── style.css
lisää kuvatiedosto mySQL: ään
MySQL: ssä on BLOB (binary large object) tietotyyppi, johon mahtuu suuri määrä binääritietoa. BLOB-tietotyyppi on täydellinen kuvatiedon tallentamiseen tietokantaan. MySQL: ssä on saatavilla neljä BLOB – tyyppiä-TINYBLOB, BLOB, MEDIUMBLOB ja LONGBLOB. LONGBLOB-tietotyyppi on täydellinen kuvatiedoston tietojen tallentamiseen.
luo Tietokantataulukko
tiedoston Sisällön tallentamiseksi tarvitaan taulukko tietokannassa. Seuraava SQL luo MySQL-tietokantaan images
– taulukon, jossa on LONGBLOB-tietotyyppikenttä.
Luo taulukko "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)
dbConfig.php
– tiedostoa käytetään tietokannan yhdistämiseen ja valintaan. Määritä tietokannan isäntä ($dbHost
), käyttäjätunnus ($dbUsername
), salasana ($dbPassword
) ja nimi ($dbName
) MySQL-tietokannan tunnistetietojen mukaisesti.
<?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);
}
Image Upload Form
Create a HTML form with a file input field to select a image file for upload. Varmista, että <lomake> sisältää seuraavat attribuutit.
- method= ”post”
- enctype= ”multipart / form-data”
<form action= " upload.php" method="post" enctype="multipart/form-data"> <label>Select Image File:</label> <input type="file" name="image"> <input type="submit" name="submit" value="Upload"></form>
Tallenna kuvatiedosto tietokantaan (Upload.php)
upload.php
– tiedosto hoitaa kuvan lataus-ja tietokantasiirtoprosessin.
- Tarkista, valitseeko käyttäjä ladattavan kuvatiedoston.
- nouda kuvatiedoston sisältö tmp_nimen avulla käyttäen PHP file_get_contents () – toimintoa.
- lisää kuvan binäärisisältö tietokantaan PHP: n ja MySQL: n avulla.
- Näytä kuvan lataustila käyttäjälle.
<?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;
?>
Hae kuva tietokannasta (view.php)
view.php
– tiedostossa haetaan kuvasisältö MySQL-tietokannasta ja luetellaan ne verkkosivulla.
- src-attribuutin tietoja, charset-ja base64-parametreja käytetään MySQL-tietokannan image Blobin näyttämiseen.
<?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 } ?>
Lataa useita kuvia ja tallenna tietokantaan PHP: n ja MySQL: n
johtopäätös
tämä opetusohjelma auttaa sinua integroimaan tiedostojen lataustoiminnot tallentamatta tiedostoja palvelimelle. Voit käyttää tätä esimerkkikommentia ladata & tallentaa kuvia tietokantaan ja hakea kuvia tietokannasta sekä näyttää ne verkkosivulla PHP: n ja MySQL: n avulla. Jotta kuvan latausprosessi olisi käyttäjäystävällinen, käytä jQueryä tiedostojen lataamiseen edistymispalkin avulla Ajaxin ja PHP: n avulla.
Haluatko saada toteutusapua, muokata tai parantaa komentosarjan toiminnallisuutta? Lähetä maksullinen palvelupyyntö
jos sinulla on kysyttävää tästä skriptistä, lähetä se QA-yhteisöömme-Kysy kysymys