{"id":28756,"date":"2021-05-28T14:24:00","date_gmt":"2021-05-28T11:24:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28756"},"modified":"2021-10-17T04:36:04","modified_gmt":"2021-10-17T01:36:04","slug":"hur-laddar-jag-upp-filen-till-s3-med-laravel-filesystem","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-laddar-jag-upp-filen-till-s3-med-laravel-filesystem\/","title":{"rendered":"Hur laddar jag upp filen till S3 med Laravel Filesystem"},"content":{"rendered":"<p>Nyligen har jag publicerat en artikel <a href=\"https:\/\/themewp.inform.click\/sv\/ladda-upp-filer-till-amazon-s3-med-aws-php-sdk\/\" title=\"Ladda upp filer till Amazon S3 med AWS PHP SDK\" >Ladda upp filer till Amazon S3 med AWS PHP SDK<\/a>. En av v\u00e5ra l\u00e4sare fr\u00e5gade hur man utf\u00f6r AWS S3-uppladdningsfiloperationer med Laravel. N\u00e4r det g\u00e4ller Laravel m\u00e5ste vi f\u00f6lja ett annat sp\u00e5r j\u00e4mf\u00f6rt med PHP. I den h\u00e4r artikeln studerar vi hur man laddar upp en fil till S3 med ett Laravel-filsystem.<\/p>\n<p><a href=\"https:\/\/laravel.com\/docs\/master\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Filesystem<\/a> erbjuder olika drivrutiner f\u00f6r att arbeta med lokalt filsystem, Amazon S3, Rackspace, etc. Dessa drivrutiner \u00e4r ett bekv\u00e4mt och enkelt s\u00e4tt att ladda upp filer lokalt eller i molnet.<\/p>\n<p>Amazon S3 \u00e4r en popul\u00e4r tj\u00e4nst f\u00f6r lagring av bilder, filer och dokument. F\u00f6r det andra sparar du mycket bandbredd f\u00f6r din webbplats om du h\u00e5ller dina filer i molnet. Det sparar ditt v\u00e4rdutrymme plus molnprestanda \u00e4r skalbar.<\/p>\n<p>Med detta sagt, l\u00e5t oss ta en titt p\u00e5 hur man laddar upp en fil till S3 med Laravel Filesystem.<\/p>\n<h3>F\u00e5 dina AWS-s\u00e4kerhetsuppgifter<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng med S3 b\u00f6r du ha ett konto p\u00e5 <a href=\"https:\/\/aws.amazon.com\/s3\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Amazon Web Services<\/a>. N\u00e4r du har det, se till att aktivera S3-tj\u00e4nsten.<\/p>\n<p>Efter att du har aktiverat S3-tj\u00e4nsten f\u00e5r du dina s\u00e4kerhetsuppgifter som vi beh\u00f6ver i den senare delen av handledningen.<\/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=\"Hur laddar jag upp filen till S3 med Laravel Filesystem\" ><\/a><\/p>\n<h3>S3 Driver Configuration i Laravel<\/h3>\n<p>Som sagt ska jag anv\u00e4nda Laravel Filesystem. Det kr\u00e4ver konfigurering av S3-drivrutinen. G\u00e5 till din redakt\u00f6r och \u00f6ppna filen <code>config\/filesystems.php<\/code>. I den h\u00e4r filen kan du se drivrutinen definierad f\u00f6r S3 under &#8217;diskar&#8217;.<\/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>I ovanst\u00e5ende kod anv\u00e4nder Laravel metoden env() f\u00f6r att st\u00e4lla in v\u00e4rdena. Det betyder att du m\u00e5ste definiera dessa konstanter i din <code>.env<\/code>fil. Du beh\u00f6ver inte definiera AWS_URL- och AWS_ENDPOINT-konstanter, eftersom det inte kr\u00e4vs f\u00f6r att ladda upp filer p\u00e5 S3-skopan.<\/p>\n<pre><code>AWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\nAWS_DEFAULT_REGION=\nAWS_BUCKET=<\/code><\/pre>\n<p>L\u00e4gg till v\u00e4rdet till varje konstant ovan. \u00d6ppna sedan terminalen i din projektkatalog och k\u00f6r kommandot:<\/p>\n<pre><code>composer require league\/flysystem-aws-s3-v3 ~1.0<\/code><\/pre>\n<p>Detta kommando installerar det \u00f6nskade biblioteket som ringer till AWS API och utf\u00f6r molnoperationerna.<\/p>\n<h3>Ladda upp en fil till S3 i Laravel<\/h3>\n<p>Vi st\u00e4ller alla in med den grundl\u00e4ggande konfigurationen. Nu kan vi g\u00e5 till den faktiska delen av fil\u00f6verf\u00f6ringen. L\u00e5t oss skapa ett enkelt formul\u00e4r med filinmatning och skicka-knapp.<\/p>\n<p>L\u00e4gg till koden nedan i din bladfil.<\/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>Byt ut platsh\u00e5llaren ROUTE_URL mot din faktiska rutt.<\/p>\n<p>Laravel ger en <code>Storage<\/code>fasad som brukade interagera med de konfigurerade diskarna. I v\u00e5rt fall \u00e4r skivan S3. L\u00e4gg till <code>Storage<\/code>fasad i styrenheten enligt f\u00f6ljande:<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesStorage;\n...\n...<\/code><\/pre>\n<p>Efter att ha inkluderat en fasad kan du ladda upp filer p\u00e5 S3. Skriv koden nedan i din metod som skickar filen p\u00e5 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>I ovanst\u00e5ende kod genererar jag ett unikt namn f\u00f6r filen och laddar sedan upp den till S3. En anv\u00e4ndare b\u00f6r lagra filnamnet i databasen f\u00f6r senare anv\u00e4ndning. N\u00e4r jag laddade upp en fil till S3 skickade jag den tredje parametern som &quot;offentlig&quot;. Om du inte vill st\u00e4lla in filen som &#8217;offentlig&#8217;, hoppa \u00f6ver den h\u00e4r parametern.<\/p>\n<p>Anv\u00e4ndaren kan h\u00e4mta webbadressen till den uppladdade filen med koden:<\/p>\n<pre><code>$url = Storage::disk('s3')-&gt;url('YOUR_FILENAME_HERE');<\/code><\/pre>\n<p>F\u00f6r att radera en fil fr\u00e5n S3-skopan, anv\u00e4nd raderingsmetoden som visas nedan.<\/p>\n<pre><code>Storage::disk('s3')-&gt;delete('YOUR_FILENAME_HERE');<\/code><\/pre>\n<p>Det handlar om hur man laddar upp en fil till S3 med Laravel Filesystem. Jag hoppas att du fick veta om det system som tillhandah\u00e5lls av Laravel f\u00f6r interaktion med Amazon S3. Dela dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h3>relaterade artiklar<\/h3>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-laddar-upp-och-komprimerar-bilder-i-laravel\/\" title=\"En guide f\u00f6r att ladda upp och komprimera bilder i Laravel\">En guide f\u00f6r att ladda upp och komprimera bilder i Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-tar-backup-av-laravel-application\/\" title=\"Hur man tar backup av Laravel Application\">Hur man tar backup av Laravel Application<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/backup-laravel-applikation-pa-dropbox\/\" title=\"Backup Laravel-applikation p\u00e5 Dropbox\">Backup Laravel-applikation p\u00e5 Dropbox<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vill du veta hur du laddar upp en fil till S3 i Laravel? I den h\u00e4r artikeln visar vi dig steg f\u00f6r steg-guide som f\u00f6rklarar hur du laddar upp en fil till 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":[503],"tags":[850],"class_list":["post-28756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28756"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21654"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}