{"id":25217,"date":"2021-05-28T14:45:00","date_gmt":"2021-05-28T11:45:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25217"},"modified":"2021-10-18T03:09:46","modified_gmt":"2021-10-18T00:09:46","slug":"come-caricare-file-su-s3-utilizzando-laravel-filesystem","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-caricare-file-su-s3-utilizzando-laravel-filesystem\/","title":{"rendered":"Come caricare file su S3 utilizzando Laravel Filesystem"},"content":{"rendered":"<p>Recentemente ho pubblicato un articolo <a href=\"https:\/\/themewp.inform.click\/it\/carica-file-su-amazon-s3-utilizzando-aws-php-sdk\/\" title=\"Carica file su Amazon S3 utilizzando AWS PHP SDK\" >Carica file su Amazon S3 utilizzando AWS PHP SDK<\/a>. Uno dei nostri lettori ha chiesto come eseguire operazioni sui file di caricamento di AWS S3 con Laravel. Quando si tratta di Laravel, dobbiamo seguire una pista diversa rispetto a PHP. In questo articolo, studiamo come caricare un file su S3 utilizzando un filesystem Laravel.<\/p>\n<p><a href=\"https:\/\/laravel.com\/docs\/master\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Filesystem<\/a> fornisce diversi driver per lavorare con il filesystem locale, Amazon S3, Rackspace, ecc. Questi driver forniscono un modo comodo e semplice per caricare file localmente o sul cloud.<\/p>\n<p>Amazon S3 \u00e8 un servizio popolare per l&#8217;archiviazione di immagini, file e documenti. In secondo luogo, conservare i tuoi file sul cloud far\u00e0 risparmiare molta larghezza di banda per il tuo sito web. Risparmia il tuo spazio di hosting e le prestazioni del cloud sono scalabili.<\/p>\n<p>Detto questo, diamo un&#8217;occhiata a come caricare un file su S3 utilizzando il Laravel Filesystem.<\/p>\n<h3>Ottieni le tue credenziali di sicurezza AWS<\/h3>\n<p>Per iniziare con S3, dovresti avere un account su <a href=\"https:\/\/aws.amazon.com\/s3\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Amazon Web Services<\/a>. Una volta ottenuto, assicurati di attivare il servizio S3.<\/p>\n<p>Dopo aver attivato il servizio S3, ottieni le tue credenziali di sicurezza di cui avremo bisogno nella parte successiva del tutorial.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20443-6081f26f1f0bf.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20443-6081f26f1f0bf.png\" alt=\"Come caricare file su S3 utilizzando Laravel Filesystem\" ><\/a><\/p>\n<h3>Configurazione del driver S3 in Laravel<\/h3>\n<p>Come detto user\u00f2 il Laravel Filesystem. Richiede la configurazione del driver S3. Vai al tuo editor e apri il file <code>config\/filesystems.php<\/code>. In questo file, puoi vedere il driver definito per S3 in &quot;dischi&quot;.<\/p>\n<p><strong>config\/filesystems.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nreturn [\n\u00a0\n\u00a0\u00a0\u00a0\u00a0.....\n\u00a0\n\u00a0\u00a0\u00a0\u00a0'disks' =&gt; [\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.....\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0's3' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 's3',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key' =&gt; env('AWS_ACCESS_KEY_ID'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; env('AWS_SECRET_ACCESS_KEY'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'region' =&gt; env('AWS_DEFAULT_REGION'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'bucket' =&gt; env('AWS_BUCKET'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'url' =&gt; env('AWS_URL'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'endpoint' =&gt; env('AWS_ENDPOINT'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\n\u00a0\u00a0\u00a0\u00a0],\n];<\/code><\/pre>\n<p>Nel codice sopra Laravel usa il metodo env() per impostare i valori. Ci\u00f2 significa che devi definire queste costanti nel tuo <code>.env<\/code>file. Non \u00e8 necessario definire le costanti AWS_URL e AWS_ENDPOINT poich\u00e9 non \u00e8 necessario per caricare i file nel bucket S3.<\/p>\n<pre><code>AWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\nAWS_DEFAULT_REGION=\nAWS_BUCKET=<\/code><\/pre>\n<p>Aggiungi il valore a ciascuna costante sopra. Quindi, apri il terminale nella directory principale del tuo progetto ed esegui il comando:<\/p>\n<pre><code>composer require league\/flysystem-aws-s3-v3 ~1.0<\/code><\/pre>\n<p>Questo comando installer\u00e0 la libreria richiesta che chiama l&#8217;API AWS ed esegue le operazioni cloud.<\/p>\n<h3>Carica un file su S3 in Laravel<\/h3>\n<p>Abbiamo impostato tutto con la configurazione di base. Ora possiamo passare alla parte effettiva del caricamento dei file. Creiamo un semplice modulo con l&#8217;input del file e il pulsante di invio.<\/p>\n<p>Aggiungi il codice seguente nel tuo file blade.<\/p>\n<pre><code>&lt;form action=\"{{ url('ROUTE_URL') }}\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputFile\"&gt;File input&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"profile_image\" id=\"exampleInputFile\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-default\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Sostituisci il segnaposto ROUTE_URL con il tuo percorso effettivo.<\/p>\n<p>Laravel fornisce una <code>Storage<\/code>facciata che interagiva con i dischi configurati. Nel nostro caso, il disco \u00e8 S3. Aggiungi la <code>Storage<\/code>facciata nel controller come segue:<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesStorage;\n...\n...<\/code><\/pre>\n<p>Dopo aver incluso una facciata, puoi caricare file su S3. Scrivi il codice qui sotto nel tuo metodo che invia il file su S3.<\/p>\n<pre><code>&lt;?php\n...\n...\npublic function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if($request-&gt;hasFile('profile_image')) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $request-&gt;file('profile_image')-&gt;getClientOriginalName();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $request-&gt;file('profile_image')-&gt;getClientOriginalExtension();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Upload File to s3\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::disk('s3')-&gt;put($filenametostore, fopen($request-&gt;file('profile_image'), 'r+'), 'public');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Store $filenametostore in the database\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Nel codice sopra, sto generando un nome univoco per il file e quindi lo carico su S3. Un utente dovrebbe memorizzare il nome del file nel database per un uso successivo. Durante il caricamento di un file su S3 ho passato il terzo parametro come &quot;pubblico&quot;. Se non vuoi impostare il file come &quot;pubblico&quot;, salta questo parametro.<\/p>\n<p>L&#8217;utente pu\u00f2 ottenere l&#8217;URL del file caricato utilizzando il codice:<\/p>\n<pre><code>$url = Storage::disk('s3')-&gt;url('YOUR_FILENAME_HERE');<\/code><\/pre>\n<p>Per eliminare un file dal bucket S3, utilizzare il metodo di eliminazione come mostrato di seguito.<\/p>\n<pre><code>Storage::disk('s3')-&gt;delete('YOUR_FILENAME_HERE');<\/code><\/pre>\n<p>Si tratta di come caricare un file su S3 utilizzando Laravel Filesystem. Spero che tu abbia avuto modo di conoscere il sistema fornito da Laravel per interagire con Amazon S3. Si prega di condividere i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h3>articoli Correlati<\/h3>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-caricare-e-comprimere-immagini-in-laravel\/\" title=\"Una guida per caricare e comprimere immagini in Laravel\">Una guida per caricare e comprimere immagini in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-eseguire-il-backup-dell-applicazione-laravel\/\" title=\"Come eseguire il backup dell&#039;applicazione Laravel\">Come eseguire il backup dell&#8217;applicazione Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/backup-dell-applicazione-laravel-su-dropbox\/\" title=\"Backup dell&#039;applicazione Laravel su Dropbox\">Backup dell&#8217;applicazione Laravel su Dropbox<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vuoi sapere come caricare un file su S3 in Laravel? In questo articolo, ti mostriamo una guida passo passo che spiega come caricare un file su Amazon S3<\/p>\n","protected":false},"author":1,"featured_media":21654,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[500],"tags":[846],"class_list":["post-25217","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25217"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25217\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21654"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}