{"id":28074,"date":"2021-06-01T12:00:00","date_gmt":"2021-06-01T09:00:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28074"},"modified":"2021-10-18T04:05:38","modified_gmt":"2021-10-18T01:05:38","slug":"carregar-arquivos-para-o-amazon-s3-usando-aws-php-sdk","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/carregar-arquivos-para-o-amazon-s3-usando-aws-php-sdk\/","title":{"rendered":"Carregar arquivos para o Amazon S3 usando AWS PHP SDK"},"content":{"rendered":"<p>Voc\u00ea deseja fazer upload de arquivos para o Amazon S3 programaticamente? Amazon S3 \u00e9 um servi\u00e7o de armazenamento em nuvem onde se pode armazenar arquivos, imagens, etc. Esses documentos podem ser p\u00fablicos ou privados, dependendo da escolha do propriet\u00e1rio. Neste artigo, estudamos como fazer upload de arquivos para o Amazon S3 usando a biblioteca oficial AWS PHP SDK.<\/p>\n<p>O Amazon S3 oferece armazenamento de objetos altamente escalon\u00e1vel. Por causa de sua robustez e desempenho, \u00e9 um servi\u00e7o de nuvem popular entre os usu\u00e1rios.<\/p>\n<h3>Por que precisa fazer upload de arquivos no Amazon S3?<\/h3>\n<p>Bem, h\u00e1 v\u00e1rios motivos para manter seus arquivos no Amazon S3. Por ser um servi\u00e7o baseado em nuvem, voc\u00ea pode acessar seus arquivos de qualquer lugar. Ao usar este servi\u00e7o, os usu\u00e1rios podem manter seus documentos confidenciais. A AWS fornece um recurso para manter seu documento p\u00fablico ou privado. Em segundo lugar, se voc\u00ea estiver executando um site da Web, manter seus arquivos na nuvem economizar\u00e1 muita largura de banda. Ele economiza espa\u00e7o de hospedagem e reduz as cargas em seu servidor.<\/p>\n<p>Dito isso, vamos dar uma olhada em como fazer upload de arquivos no Amazon S3 usando PHP.<\/p>\n<h3>Obtenha suas credenciais de seguran\u00e7a<\/h3>\n<p>Para come\u00e7ar a usar o S3, voc\u00ea deve ter uma conta na <a href=\"https:\/\/aws.amazon.com\/s3\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">AWS<\/a>. Depois de criar a conta AWS, certifique-se de ativar o servi\u00e7o S3 seguindo seu processo de verifica\u00e7\u00e3o.<\/p>\n<p>Ao ativar o servi\u00e7o S3, obtenha suas credenciais de seguran\u00e7a que solicitaremos ao trabalhar com as APIs.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20389-6081ea50ea555.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-20389-6081ea50ea555.png\" alt=\"Carregar arquivos para o Amazon S3 usando AWS PHP SDK\" ><\/a><\/p>\n<h3>C\u00f3digo para upload de arquivos para Amazon S3<\/h3>\n<p>Estamos prontos com as chaves de API da AWS. Em seguida, instale uma biblioteca oficial <a href=\"https:\/\/github.com\/aws\/aws-sdk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">AWS PHP SDK<\/a> em seu projeto. Eu recomendo usar o <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> para instalar esta biblioteca. Abra o terminal no diret\u00f3rio raiz do seu projeto e execute o comando abaixo.<\/p>\n<pre><code>composer require aws\/aws-sdk-php<\/code><\/pre>\n<p>Este comando instalar\u00e1 a biblioteca com suas depend\u00eancias em seu projeto.<\/p>\n<h4>Criar um intervalo na AWS<\/h4>\n<p>Na AWS, precisamos criar um Bucket para armazenar nossos arquivos. O balde nada mais \u00e9 do que uma unidade l\u00f3gica de armazenamento na AWS. Todos os seus arquivos ser\u00e3o armazenados dentro do balde.<\/p>\n<p>Voc\u00ea pode criar um bucket no painel S3 diretamente. Mas se algu\u00e9m deseja cri\u00e1-lo dinamicamente, consulte o c\u00f3digo abaixo.<\/p>\n<p><strong>create-bucket.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\nuse AwsS3S3Client;\n\u00a0\n$bucketName = 'YOUR_BUCKET_NAME';\n\u00a0\n$client = new S3Client([\n\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0'region' =&gt; 'YOUR_AWS_REGION',\n\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; 'ACCESS_KEY_ID',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; 'SECRET_ACCESS_KEY'\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$result = $client-&gt;createBucket([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Bucket' =&gt; $bucketName, \/\/ REQUIRED\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ACL'\u00a0\u00a0\u00a0 =&gt; 'public-read',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0echo \"Bucket created successfully.\";\n} catch (AwsS3ExceptionS3Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\/\/ output error message if fails\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Certifique-se de substituir os marcadores de posi\u00e7\u00e3o pelos valores reais. Este c\u00f3digo cria um dep\u00f3sito em seu painel S3. Faremos o upload dos arquivos neste intervalo por meio da API.<\/p>\n<p>No c\u00f3digo acima, passei chave =&gt; par de valores como <code>'ACL' =&gt; 'public-read'<\/code>. Este par define o acesso p\u00fablico ao seu intervalo ou arquivos. Se voc\u00ea deseja manter seu armazenamento privado, remova esta linha do c\u00f3digo.<\/p>\n<p>O pr\u00f3ximo trabalho \u00e9 escrever c\u00f3digo para fazer upload de arquivos no Amazon S3. Por causa do tutorial, estou criando diferentes arquivos PHP e escrevendo c\u00f3digo neles. No seu caso, sinta-se \u00e0 vontade para implementar a l\u00f3gica dependendo do fluxo do seu projeto.<\/p>\n<h4>Carregar arquivo para Amazon S3<\/h4>\n<p>Voc\u00ea est\u00e1 pronto com o balde para armazenar seus arquivos. Crie um arquivo <code>upload-to-s3.php<\/code>e coloque o c\u00f3digo abaixo neste arquivo.<\/p>\n<p><strong>upload-to-s3.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse AwsS3S3Client;\n\u00a0\n\/\/ Instantiate an Amazon S3 client.\n$s3 = new S3Client([\n\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0'region'\u00a0 =&gt; 'YOUR_AWS_REGION',\n\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; 'ACCESS_KEY_ID',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; 'SECRET_ACCESS_KEY'\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\n\u00a0\n$bucketName = 'YOUR_BUCKET_NAME';\n$file_Path = __DIR__. '\/my-image.png';\n$key = basename($file_Path);\n\u00a0\n\/\/ Upload a publicly accessible file. The file size and type are determined by the SDK.\ntry {\n\u00a0\u00a0\u00a0\u00a0$result = $s3-&gt;putObject([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Bucket' =&gt; $bucketName,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Key'\u00a0\u00a0\u00a0 =&gt; $key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Body'\u00a0\u00a0 =&gt; fopen($file_Path, 'r'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ACL'\u00a0\u00a0\u00a0 =&gt; 'public-read',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0echo \"Image uploaded successfully. Image path is: \". $result-&gt;get('ObjectURL');\n} catch (AwsS3ExceptionS3Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo \"There was an error uploading the file.n\";\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Aqui, voc\u00ea deve atribuir o nome do intervalo para a <code>$bucketName<\/code>vari\u00e1vel. No meu caso, estou enviando um arquivo que diz &#8216;my-image.png&#8217; cujo caminho eu defini no c\u00f3digo. Conseq\u00fcentemente, voc\u00ea deve ajustar o caminho de seus arquivos. Finalmente, estou imprimindo o caminho de um arquivo carregado usando o <code>get()<\/code>m\u00e9todo na resposta recebida.<\/p>\n<p>Tudo feito! Agora execute o <code>upload-to-s3.php<\/code>arquivo no navegador e seu arquivo deve ser carregado no bucket do Amazon S3.<\/p>\n<p>Espero que voc\u00ea entenda como criar um bucket e fazer upload de arquivos para o Amazon S3. Voc\u00ea tamb\u00e9m pode verificar os <a href=\"https:\/\/github.com\/awsdocs\/aws-doc-sdk-examples\/tree\/master\/php\/example_code\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">c\u00f3digos de exemplo<\/a> fornecidos pela AWS no GitHub.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-upload-de-arquivo-para-s3-usando-o-sistema-de-arquivos-laravel\/\" title=\"Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel\">Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-upload-de-imagens-para-outro-servidor-atraves-de-ftp-no-laravel\/\" title=\"Como fazer upload de imagens para outro servidor atrav\u00e9s de FTP no Laravel\">Como fazer upload de imagens para outro servidor atrav\u00e9s de FTP no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-integrar-a-api-do-planilhas-google-com-php\/\" title=\"Como integrar a API do Planilhas Google com PHP\">Como integrar a API do Planilhas Google com PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste tutorial, mostramos como fazer upload de arquivos para o Amazon S3 usando a biblioteca oficial do SDK do AWS PHK. Armazenar arquivos na nuvem vai economizar um<\/p>\n","protected":false},"author":1,"featured_media":21664,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[278],"tags":[848],"class_list":["post-28074","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=28074"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28074\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21664"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}