当前位置: 首页 > news >正文

php对接AWS S3云存储,上传S3及访问权限问题

首先先下载sdk包
https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html

S3创建存储桶
在这里插入图片描述
去安全凭证-》创建访问秘钥
在这里插入图片描述
创建的时候会提示,主账号创建不安全,这个时候我们需要创建一个IAM账号来创建秘钥
创建的步骤访问这个链接 https://www.codenong.com/a513c91eac7186db59fe/

创建之后来到代码这一块

//$keyName是存储S3的路径
//$filepath是本地图片的路径
awsUploadFile($keyName, $filepath);
//删除本地文件
unlink('.' . $resultData['url']);function awsUploadFile($keyName, $filepath)
{//引入文件require_once '../extend/aws/aws-autoloader.php';//    set_time_limit(0);$awsConfig = ['version' => 'latest',//版本'acl' => 'public-read',//权限//这个一定要加,是访问权限'bucket' => config('site.S3bucket'),//存储桶名称'region' => 'ap-southeast-1',//区域 和 亚马逊资源服务器创建的桶块区域一致'key_id' => config('site.S3key_id'),//Access key ID'access_key' => config('site.S3access_key'),//Secret access key];//实例化$credentials = new Aws\Credentials\Credentials($awsConfig['key_id'],$awsConfig['access_key']);$s3 = new Aws\S3\S3Client(['version' => $awsConfig['version'],//版本'region' => $awsConfig['region'],//区域'credentials' => $credentials,]);if(!file_exists($filepath)){dump('file does not exist');exit;}
//    $http = new GuzzleHttp\Client();
//    $res = $http->request('GET', $filepath);try {$result = $s3->putObject(['Bucket' => $awsConfig['bucket'],'Key' => $keyName,'Body' => fopen($filepath, 'r'),'ACL' => 'public-read',//这个一定要加,是访问权限
//            'Body' => $res->getBody(),
//            'ContentLength' => $res->getHeader('content-length')[0],]);} catch (Exception $exception) {echo "Failed to upload $filepath with error: " . $exception->getMessage();exit("Please fix error with file upload before continuing.");}return $result;
}

如果是手动上传的文件需要开一下权限
在这里插入图片描述

相关文章:

php对接AWS S3云存储,上传S3及访问权限问题

首先先下载sdk包 https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html S3创建存储桶 去安全凭证-》创建访问秘钥 创建的时候会提示,主账号创建不安全,这个时候我们需要创建一个IAM账号来创建秘钥 创…...

java 实现单例模式

单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一种全局访问该实例的方式。在Java中,可以使用多种方式来实现单例模式,下面整理了几种常见的实现方式。 饿汉式单例模式(Eager Initialization)&…...

minio文件服务器开启https

一、准备证书 你要有https安全证书,我的是适用于nginx的证书 私钥 xxxx.key 公钥 xxxx.pem 二、上传证书到minio服务器 然后看看你的minio docker 有没有把 /root/.minio 挂载在主机上,如果有那么把两个证书文件放在/root/.minio/certs目录里面。…...

每日刷题(回溯法经典问题之子集)

食用指南:本文为作者刷题中认为有必要记录的题目 前置知识:回溯法经典问题之组合 ♈️今日夜电波:想着你—郭顶 1:09 ━━━━━━️💟──────── 4:15 …...

PostgreSQL在进行除法时要注意

背景 整型除以整型,正常情况下当然得到的应该也是整型。数据库也是这么干的。 但是在数据库应用中,通常业务的需求是得到NUMERIC,不能直接把小数干掉。 数据库的行为给用户带来了诸多不便,例如1除以2,如果是整型除法会…...

开开心心带你学习MySQL数据库之第五篇

😺欢迎来到我的博客, 记得点赞👍收藏⭐️留言✍️🐱 🐉做为一个怪兽,我的目标是少消灭一个奥特曼🐉 📖希望我写的博客对你有所帮助,如有不足,请指正📖 chatgpt 是否能够代替程序猿?…...

Geotools对geojson的解析

在 GeoTools 中&#xff0c;对 GeoJSON 的支持是通过一个插件来完成的&#xff0c;用户同样可以在 Maven 的 pom.xml 配置文件中添加下述的依赖。 <dependency><groupId>org.geotools</groupId><artifactId>gt-geojson</artifactId><version&…...

【博客701】shell实现保留网络现场:ping失败时执行mtr

shell实现保留网络现场&#xff1a;ping失败时执行mtr 场景 当我们网络出现抖动&#xff0c;到某个目的地ping不通时&#xff0c;我们想知道路径上哪里出现问题时可以在那时候执行mtr并保留下现场以供排查 实现&#xff1a;ping_and_mtr.sh #!/bin/bash# 定义要ping的IP地址列…...

放弃手写代码吧!用低代码你能生成各种源码

很多同学不知道为什么要用Low-code做开发&#xff0c;传统IT开发不行么&#xff1f;当然可以。 传统IT自研软件开发&#xff0c;通过编程去写代码&#xff0c;还有数据库、API、第三方基础架构等。这个方式很好&#xff0c;但不可避免的会带来开发周期长、难度大&#xff0c;技…...

什么程度才算精通 Linux?

前言 Linux 的优秀之处自然不必多说。 如果将操作系统比作一辆汽车&#xff0c;那 Linux 就是一辆性能出色的多功能越野车&#xff0c;上山下海飞天无所不能。 如果你拥有了它&#xff0c;一定不会只满足于驾驶它上下班&#xff0c;不能只会挂挡、踩油门和控制方向之类的基本…...

jmeter中的__setProperty用法

__setProperty 是一个用于设置 JMeter 属性的函数&#xff0c;基本语法&#xff1a; __setProperty(property, value)** property : 是要设置的属性的名称 ** value : 是要设置的属性的值在 JMeter中&#xff0c;可以使用 __setProperty 函数的元素&#xff1a; BeanShell …...

vue基础知识六:v-show和v-if有什么区别?使用场景分别是什么?

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />当表达式为true的时候&#…...

SpringBoot几个常用的注解

&#xff08;1&#xff09;RestController和Controller指定一个类&#xff0c;作为控制器的注解 &#xff08;2&#xff09;RequestMapping方法级别的映射注解&#xff0c;这一个用过Spring MVC的小伙伴相信都很熟悉 &#xff08;3&#xff09;EnableAutoConfiguration和Spri…...

腾讯JAVA后端秋招面试总结

腾讯秋招的面经,岗位是 java 后端开发。 说一下BIO、NIO和AIO 答: BIO是阻塞IO。在上一个线程的任务执行完之前,该线程必须阻塞等待上一个线程执行完毕。 NIO是非阻塞IO。一旦是响应事件发生了,该线程就会将对应的响应事件交给对应的事件处理器进行处理。 AIO是异步IO。主…...

随着iPhone 15降临,是时候扔掉所有的Lightning充电器了

自从苹果推出Lightning端口&#xff08;一直追溯到iPhone 5&#xff09;十多年后&#xff0c;你可能已经积累了相当多的Lightning电缆和配件。好吧&#xff0c;在下周的苹果活动之前&#xff0c;所有关于iPhone 15的传言都表明你不再需要它们了。 与最好的iPad和最好的MacBook…...

huggingface 使用入门笔记

概念 Hugging Face Hub​​和 Github 类似&#xff0c;都是Hub(社区)。Hugging Face可以说的上是机器学习界的Github。Hugging Face为用户提供了以下主要功能&#xff1a; ​模型仓库&#xff08;Model Repository&#xff09;​​&#xff1a;Git仓库可以让你管理代码版本、…...

ASP.NET Core 中的 Razor Pages

Razor Pages Razor Pages 是基于页面的 ASP.NET Core Web App 架构。 相比 MVC 模式&#xff0c;Razor Pages的生产效率更快。 Razer Pages 需要两个中间件&#xff1a; builder…Services.AddRazorPages 添加 Razor Pages servicesapp.MapRazorPages 添加 Razor Pages endpo…...

C语言入门 Day_14 for循环

目录​​​​​​​ 1.for循环 2.循环执行顺序 3.易错点 4.思维导图 前言 我们定义了一个数组以后&#xff0c;要使用&#xff08;读取或者修改&#xff09;数组元素的话&#xff0c;可以一个一个的读取&#xff0c;就前两课学的那样&#xff0c;代码类似这个结构。 int …...

深入解析 Socks5 代理与网络安全

作为网络工程师和网络文章主编&#xff0c;我们时刻关注着网络世界中的新趋势和技术发展。本文将探讨 Socks5 代理、代理IP、网络安全以及与之相关的 HTTP 协议&#xff0c;为您呈现一个深入的技术洞察。 引言 在今天的互联网时代&#xff0c;网络安全是至关重要的话题。攻击…...

Vue + Element UI 前端篇(十二):用户管理模块

Vue Element UI 实现权限管理系统 前端篇&#xff08;十二&#xff09;&#xff1a;用户管理模块 用户管理模块 添加接口 在 http/moduls/user.js 中添加用户管理相关接口。 import axios from ../axios/* * 用户管理模块*/// 保存 export const save (params) > {ret…...

从‘猫狗大战’到医疗影像:LRP(逐层相关性传播)如何帮医生看懂AI的‘诊断思路’?

从‘猫狗大战’到医疗影像&#xff1a;LRP如何成为医生与AI的翻译官 当一位放射科医生第一次看到AI系统标注的肺结节"恶性概率92%"时&#xff0c;他的反应不是赞叹&#xff0c;而是皱眉&#xff1a;"它凭什么这么判断&#xff1f;"这种场景正在全球各大医院…...

在Jetson Nano上构建海康威视相机Docker镜像:从SDK集成到Python应用部署

1. 环境准备与基础配置 在Jetson Nano上构建海康威视相机Docker镜像的第一步&#xff0c;是确保硬件和基础软件环境就绪。我建议从官方渠道下载最新的JetPack SDK&#xff0c;这个工具包包含了CUDA、cuDNN等深度学习推理必需的组件。安装完成后&#xff0c;记得运行nvidia-smi命…...

OpenClaw技能市场探索:GLM-4.7-Flash加持的10个实用插件

OpenClaw技能市场探索&#xff1a;GLM-4.7-Flash加持的10个实用插件 1. 为什么需要关注OpenClaw技能市场&#xff1f; 当我第一次接触OpenClaw时&#xff0c;最让我惊喜的不是它的基础功能&#xff0c;而是它丰富的技能市场生态。作为一个长期使用各类自动化工具的技术爱好者…...

CCF-CSP 39-2 水印检查(watermark)【C++】

题目 https://sim.csp.thusaac.com/contest/39/problem/1https://sim.csp.thusaac.com/contest/39/problem/1 思路参考&#xff1a; 80分 暴力求解&#xff0c;遍历所有可能的k&#xff0c;检验是否满足条件&#xff0c;可得80分 时间复杂度&#xff1a;O(L*n^2)&#xff0…...

电容器阻抗与ESR频率特性解析:从理论到高频应用实践

1. 电容器阻抗与ESR的基础原理 当你第一次听说电容器有"阻抗"和"ESR"时&#xff0c;可能会觉得这是两个高深莫测的专业术语。其实理解它们并不难&#xff0c;就像理解水管里的水流一样直观。想象一下&#xff0c;电容器就像是一个储水罐&#xff0c;而阻抗…...

告别OpenAI依赖:用智谱AI与轻量本地模型构建RAG评估实战

1. 为什么需要替代OpenAI的RAG评估方案 当我们在构建RAG&#xff08;检索增强生成&#xff09;系统时&#xff0c;评估环节至关重要。传统的Ragas框架默认使用OpenAI的GPT模型进行评估&#xff0c;但这会带来几个实际问题&#xff1a; 首先是访问稳定性问题。由于网络环境差异…...

Swagger2Word:高效转换与文档自动化的API文档解决方案

Swagger2Word&#xff1a;高效转换与文档自动化的API文档解决方案 【免费下载链接】swagger2word 项目地址: https://gitcode.com/gh_mirrors/swa/swagger2word 在软件开发过程中&#xff0c;API文档的管理和维护常常成为团队协作的痛点。开发人员使用Swagger/OpenAPI规…...

SDMatte多风格背景生成:抠图后智能匹配艺术化背景

SDMatte多风格背景生成&#xff1a;抠图后智能匹配艺术化背景 1. 效果亮点预览 SDMatte带来的不仅是简单的透明背景抠图。它开创性地将精准抠图与智能背景生成相结合&#xff0c;让每张图片都能拥有无限可能的艺术化呈现。想象一下&#xff0c;你的产品照片可以瞬间变成油画风…...

提升90%效率:OpenCore EFI自动化配置工具OpCore-Simplify实战指南

提升90%效率&#xff1a;OpenCore EFI自动化配置工具OpCore-Simplify实战指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 副标题&#xff1a;面向…...

深度解析:关系型数据库与非关系型数据库(区别+原理+适用场景,一文吃透)

在后端开发、数据存储领域&#xff0c;“关系型数据库&#xff08;SQL&#xff09;”和“非关系型数据库&#xff08;NoSQL&#xff09;”是两个绕不开的核心概念。很多开发者在选型时会困惑&#xff1a;到底该用MySQL还是MongoDB&#xff1f;PostgreSQL和Redis的区别是什么&am…...