Jak przesyłać pliki na zdalny serwer w PHP
Przechowywanie plików lub obrazów na zewnętrznym serwerze jest obecnie powszechnym zachowaniem. Do przechowywania plików ludzie używają pamięci w chmurze, takiej jak AWS, Azure, Google Cloud, Backblaze lub własnego serwera zdalnego. W tym scenariuszu użytkownik przechowuje pliki na innym serwerze i wywołuje je za pośrednictwem łącza na swoim serwerze aplikacji. Zaletą tego jest oszczędność przepustowości na serwerze, co skutkuje lepszą wydajnością serwera.
W przeszłości, pracując nad projektem klienta, stosowaliśmy tę technikę przechowywania obrazów na zdalnym serwerze. Klient chciał wysyłać obrazy na własny serwer zewnętrzny i wywoływać go z aplikacji w razie potrzeby. W takim przypadku musieliśmy przechowywać zdalną ścieżkę obrazu w bazie danych po przesłaniu go na zdalny serwer.
W tym artykule pokażemy, jak przesyłać pliki na zdalny serwer w PHP przez FTP. Na potrzeby tego samouczka do przesyłania używamy obrazów. Użytkownik może wybrać dowolny typ pliku zgodnie z ich wymaganiami.
Pierwsze kroki
Aby przejść dalej, powinieneś mieć poświadczenia FTP swojego serwera. Kolejnym wymaganiem jest kompozytor. Upewnij się, że zainstalowałeś Composer w swoim systemie. Użyjesz pakietu o nazwie Flysystem, który do instalacji wymaga Composera.
Otwórz terminal w katalogu głównym projektu i uruchom poniższe polecenie.
composer require league/flysystem
Po instalacji utwórz formularz HTML z danymi wejściowymi i przyciskiem prześlij. Ten formularz posłuży do przeglądania obrazu i wysłania go na serwer.
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="image" /><br>
<input type="submit" name="submit" value="Submit">
</form>
Prześlij pliki na zdalny serwer
Zainstalowałeś bibliotekę Flysystem, a także stworzyłeś formularz HTML. Następną rzeczą do zrobienia jest pobranie obrazu z pliku wejściowego i przesłanie go na zdalny serwer. Twój upload.php
testament zawiera poniższy kod.
<?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();
}
}
}
Zastąp symbole zastępcze rzeczywistymi wartościami. Tutaj przechowujemy obrazy w public_html/images
katalogu. Możesz dostosować tę ścieżkę zgodnie ze swoimi wymaganiami. W powyższym kodzie Flysystem łączy się z twoim serwerem przez FTP, odczytuje zawartość obrazu i umieszcza obraz na określonej ścieżce.
Mamy nadzieję, że wiesz, jak przesyłać pliki na zdalny serwer w PHP. Za pomocą Flysystem możesz również przesyłać pliki na AWS S3, Azure, Dropbox itp. Więcej o tym pakiecie możesz dowiedzieć się z ich oficjalnej dokumentacji.
Powiązane artykuły
- Jak przesłać obrazy na inny serwer przez FTP w Laravel?
- Prześlij pliki do Amazon S3 za pomocą AWS PHP SDK