{"id":27804,"date":"2021-05-15T12:32:00","date_gmt":"2021-05-15T09:32:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27804"},"modified":"2021-10-18T03:46:58","modified_gmt":"2021-10-18T00:46:58","slug":"jak-przesylac-pliki-na-zdalny-serwer-w-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-przesylac-pliki-na-zdalny-serwer-w-php\/","title":{"rendered":"Jak przesy\u0142a\u0107 pliki na zdalny serwer w PHP"},"content":{"rendered":"<p>Przechowywanie plik\u00f3w lub obraz\u00f3w na zewn\u0119trznym serwerze jest obecnie powszechnym zachowaniem. Do przechowywania plik\u00f3w ludzie u\u017cywaj\u0105 pami\u0119ci w chmurze, takiej jak AWS, Azure, Google Cloud, Backblaze lub w\u0142asnego serwera zdalnego. W tym scenariuszu u\u017cytkownik przechowuje pliki na innym serwerze i wywo\u0142uje je za po\u015brednictwem \u0142\u0105cza na swoim serwerze aplikacji. Zalet\u0105 tego jest oszcz\u0119dno\u015b\u0107 przepustowo\u015bci na serwerze, co skutkuje lepsz\u0105 wydajno\u015bci\u0105 serwera.<\/p>\n<p>W przesz\u0142o\u015bci, pracuj\u0105c nad projektem klienta, stosowali\u015bmy t\u0119 technik\u0119 przechowywania obraz\u00f3w na zdalnym serwerze. Klient chcia\u0142 wysy\u0142a\u0107 obrazy na w\u0142asny serwer zewn\u0119trzny i wywo\u0142ywa\u0107 go z aplikacji w razie potrzeby. W takim przypadku musieli\u015bmy przechowywa\u0107 zdaln\u0105 \u015bcie\u017ck\u0119 obrazu w bazie danych po przes\u0142aniu go na zdalny serwer.<\/p>\n<p>W tym artykule poka\u017cemy, jak przesy\u0142a\u0107 pliki na zdalny serwer w PHP przez FTP. Na potrzeby tego samouczka do przesy\u0142ania u\u017cywamy obraz\u00f3w. U\u017cytkownik mo\u017ce wybra\u0107 dowolny typ pliku zgodnie z ich wymaganiami.<\/p>\n<h3>Pierwsze kroki<\/h3>\n<p>Aby przej\u015b\u0107 dalej, powiniene\u015b mie\u0107 po\u015bwiadczenia FTP swojego serwera. Kolejnym wymaganiem jest kompozytor. Upewnij si\u0119, \u017ce zainstalowa\u0142e\u015b <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> w swoim systemie. <a href=\"https:\/\/github.com\/thephpleague\/flysystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">U\u017cyjesz<\/a> pakietu o nazwie <a href=\"https:\/\/github.com\/thephpleague\/flysystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Flysystem,<\/a> kt\u00f3ry do instalacji wymaga Composera.<\/p>\n<p>Otw\u00f3rz terminal w katalogu g\u0142\u00f3wnym projektu i uruchom poni\u017csze polecenie.<\/p>\n<pre><code>composer require league\/flysystem<\/code><\/pre>\n<p>Po instalacji utw\u00f3rz formularz HTML z danymi wej\u015bciowymi i przyciskiem prze\u015blij. Ten formularz pos\u0142u\u017cy do przegl\u0105dania obrazu i wys\u0142ania go na serwer.<\/p>\n<pre><code>&lt;form method=\"post\" action=\"upload.php\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"image\" \/&gt;&lt;br&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>Prze\u015blij pliki na zdalny serwer<\/h3>\n<p>Zainstalowa\u0142e\u015b bibliotek\u0119 Flysystem, a tak\u017ce stworzy\u0142e\u015b formularz HTML. Nast\u0119pn\u0105 rzecz\u0105 do zrobienia jest pobranie obrazu z pliku wej\u015bciowego i przes\u0142anie go na zdalny serwer. Tw\u00f3j <code>upload.php<\/code>testament zawiera poni\u017cszy kod.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\nuse LeagueFlysystemFilesystem;\nuse LeagueFlysystemAdapterFtp as Adapter;\n\u00a0\nif(isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if(isset($_FILES['image']['name']) &amp;&amp; !empty($_FILES['image']['name'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filesystem = new Filesystem(new Adapter([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'host' =&gt; 'HOST_NAME_HERE',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; 'USERNAME_HERE',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'PASSWORD_HERE',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$stream = fopen($_FILES['image']['tmp_name'], 'r+');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filesystem-&gt;putStream('public_html\/images\/'.$_FILES['image']['name'], $stream);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (is_resource($stream)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fclose($stream);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Image uploaded on external server successfully.\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Zast\u0105p symbole zast\u0119pcze rzeczywistymi warto\u015bciami. Tutaj przechowujemy obrazy w <code>public_html\/images<\/code>katalogu. Mo\u017cesz dostosowa\u0107 t\u0119 \u015bcie\u017ck\u0119 zgodnie ze swoimi wymaganiami. W powy\u017cszym kodzie Flysystem \u0142\u0105czy si\u0119 z twoim serwerem przez FTP, odczytuje zawarto\u015b\u0107 obrazu i umieszcza obraz na okre\u015blonej \u015bcie\u017cce.<\/p>\n<p>Mamy nadziej\u0119, \u017ce wiesz, jak przesy\u0142a\u0107 pliki na zdalny serwer w PHP. Za pomoc\u0105 Flysystem mo\u017cesz r\u00f3wnie\u017c przesy\u0142a\u0107 pliki na AWS S3, Azure, Dropbox itp. Wi\u0119cej o tym pakiecie mo\u017cesz dowiedzie\u0107 si\u0119 z ich <a href=\"https:\/\/flysystem.thephpleague.com\/v1\/docs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">oficjalnej dokumentacji<\/a>.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-przeslac-obrazy-na-inny-serwer-przez-ftp-w-laravel\/\" title=\"Jak przes\u0142a\u0107 obrazy na inny serwer przez FTP w Laravel?\">Jak przes\u0142a\u0107 obrazy na inny serwer przez FTP w Laravel?<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przeslij-pliki-do-amazon-s3-za-pomoca-aws-php-sdk\/\" title=\"Prze\u015blij pliki do Amazon S3 za pomoc\u0105 AWS PHP SDK\">Prze\u015blij pliki do Amazon S3 za pomoc\u0105 AWS PHP SDK<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule poka\u017cemy, jak przesy\u0142a\u0107 pliki na zdalny serwer w PHP. Przechowywanie plik\u00f3w na zdalnym serwerze i wywo\u0142ywanie ich z serwera aplikacji oszcz\u0119dza przepustowo\u015b\u0107<\/p>\n","protected":false},"author":1,"featured_media":21909,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[277],"tags":[847],"class_list":["post-27804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27804"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27804\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}