✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuinka siirtää tiedostoja etäpalvelimelle PHP: ssä

21

Tiedostojen tai kuvien tallentaminen ulkoiselle palvelimelle on nykyään yleistä. Ihmiset käyttävät tiedostojen tallentamiseen pilvitallennustilaa, kuten AWS, Azure, Google Cloud, Backblaze tai omaa etäpalvelinta. Tässä tilanteessa käyttäjä tallentaa tiedostot toiselle palvelimelle ja kutsu sitä sovelluspalvelimen linkin kautta. Tämän tekemisen etuna on, että se säästää palvelimen kaistanleveyttä, mikä parantaa palvelimen suorituskykyä.

Aiemmin työskennellessämme asiakkaan projektissa seurasimme tätä tekniikkaa kuvien tallentamiseksi etäpalvelimelle. Asiakas halusi lähettää kuvia omalle ulkoiselle palvelimelleen ja kutsua sitä sovelluksesta missä tahansa. Siinä tapauksessa meidän piti tallentaa etäkuvan polku tietokantaan sen jälkeen, kun lähetimme sen etäpalvelimeen.

Tässä artikkelissa näytämme, kuinka tiedostoja voidaan siirtää PHP: n etäpalvelimelle FTP: n kautta. Tämän opetusohjelman vuoksi käytämme kuvia lataamiseen. Käyttäjä voi valita minkä tahansa tyyppisen tiedoston vaatimustensa mukaisesti.

Päästä alkuun

Jatkaaksesi, sinulla on oltava palvelimesi FTP-tunnistetiedot. Toinen vaatimus on säveltäjä. Varmista, että olet asentanut Composerin järjestelmään. Aiot käyttää Flysystem-pakettia, joka vaatii Composerin asennuksen.

Avaa pääte projektin juurihakemistossa ja suorita alla oleva komento.

composer require league/flysystem

Luo asennuksen jälkeen HTML-lomake, jossa on tiedostosyöttö ja Lähetä-painike. Tätä lomaketta käytetään kuvan selaamiseen ja lähettämiseen palvelimelle.

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="image" /><br>
    <input type="submit" name="submit" value="Submit">
</form>

Siirrä tiedostoja etäpalvelimeen

Olet asentanut Flysystem-kirjaston ja luonut myös HTML-lomakkeen. Seuraava asia, joka on tehtävä, on ottaa kuva tiedostotiedostosta ja lähettää se etäpalvelimelle. Antamasi upload.phpkoodi sisältää alla olevan koodin.

<?php
require_once "vendor/autoload.php";
 
use LeagueFlysystemFilesystem;
use LeagueFlysystemAdapterFtp as Adapter;
 
if(isset($_POST['submit'])) {
 
    if(isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {
 
        try {
            $filesystem = new Filesystem(new Adapter([
                'host' => 'HOST_NAME_HERE',
                'username' => 'USERNAME_HERE',
                'password' => 'PASSWORD_HERE',
            ]));
 
            $stream = fopen($_FILES['image']['tmp_name'], 'r+');
            $filesystem->putStream('public_html/images/'.$_FILES['image']['name'], $stream);
 
            if (is_resource($stream)) {
                fclose($stream);
            }
 
            echo "Image uploaded on external server successfully.";
        } catch(Exception $e) {
            echo $e->getMessage();
        }
    }
}

Korvaa paikkamerkit todellisilla arvoilla. Tässä on tallennettu kuvia public_html/imageshakemistoon. Voit säätää tätä polkua vaatimuksesi mukaan. Edellä olevassa koodissa Flysystem muodostaa yhteyden palvelimeesi FTP: n kautta, lukee kuvasisällön ja laittaa kuvan määritetylle polulle.

Toivomme, että sait tietää kuinka siirtää tiedostoja etäpalvelimelle PHP: ssä. Flysystemin avulla voit myös siirtää tiedostoja AWS S3: lla, Azure: lla, Dropboxilla jne. Voit oppia lisää tästä paketista heidän virallisista asiakirjoistaan.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja