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

php 亚马逊AWS-S3对象存储上传文件

最近做国外项目的时候,需要把文件上传到AWS-S3对象存储空间里,下面整理一下上传方法,和碰到的问题

代码

 /*** 亚马逊oss Aws上传* composer require aws/aws-sdk-php* @param $filePath* @param $ossPath* @return array* @author wzb* @data 2024/5/25*/
function ossAwsUploadFile($filePath = '', $ossPath = '')
{// 配置信息  composer require aws/aws-sdk-php$configOss = config('aws_oss');$accessKeyId = $configOss['accessKeyId'] ?? '';  // 你的AccessKeyId$accessKeySecret = $configOss['accessKeySecret'] ?? '';  // 你的AccessKeySecret$endpoint = $configOss['region'] ?? ''; // 你的Bucket所在地域的域名 ap-southeast-1$bucket = $configOss['bucket'] ?? ''; // 你的Bucket名字if (empty($accessKeyId) || empty($accessKeySecret) || empty($endpoint) || empty($bucket)) {return [];}$awsConfig = ['version' => 'latest',//版本'acl' => 'public-read',//权限//这个一定要加,是访问权限'bucket' => $bucket,//存储桶名称'region' => $endpoint,'key_id' => $accessKeyId,//Access key ID'access_key' => $accessKeySecret,//Secret access key];//实例化$s3 = new S3Client(['version' => $awsConfig['version'],//版本'region' => $awsConfig['region'],//区域'credentials' => new Credentials($awsConfig['key_id'],$awsConfig['access_key']),// 开启bug调试
//            'debug' => true]);if (!file_exists($filePath)) {return [];}try {$result = $s3->putObject(['Bucket' => $awsConfig['bucket'],'ACL' => $awsConfig['acl'],//这个一定要加,是访问权限'Key' => $ossPath,   // //亚马逊静态资源服务器上的路径+图片名称
//                'Body' => fopen($filePath, 'r'),'SourceFile' => $filePath,  // 原文件路径]);$result = $result->toArray();$imgUrl = $result['ObjectURL'] ?? '';return $result;} catch (Exception $exception) {echo $exception->getMessage();return [];}
}// 调用示例$ossInfo = ossAwsUploadFile("F:/wzb/img/5836923c44342.jpg", 'img/5836923c44342.jpg');

碰到的问题

一直报AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate的问题:
下面详细报错信息:
PutObject" on “https://ss.amazonaws.com/img/5836923c44342.jpg”; AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://ss.amazonaws.com/img/5836923c44342.jpg

解决办法

php.ini里面的 curl.cainfo 需要设置

  1. 下载cacert: https://curl.haxx.se/ca/cacert.pem

  2. 配置php.ini 并重启

curl.cainfo = "真实路径/cacert.pem"

相关文章:

php 亚马逊AWS-S3对象存储上传文件

最近做国外项目的时候,需要把文件上传到AWS-S3对象存储空间里,下面整理一下上传方法,和碰到的问题 代码 /*** 亚马逊oss Aws上传* composer require aws/aws-sdk-php* param $filePath* param $ossPath* return array* author wzb* data 202…...

electron-01 基础及NPM相关配置

electron基础 结构 ChromiumNode.jsNative apis 工作流程 启动APP主进程创建windowWin加载界面操作 主进程 package.json中main属性对应的文件一个应用对应一个主进程只有主进程可以进行GUI的API操作 渲染进程 windows中展示的界面通过渲染进程表现一个应用可以有多个渲…...

Foxit PDF Editor Pro福昕PDF编辑器Pro:重塑您的文档编辑体验

在信息爆炸的时代,PDF文件因其跨平台、格式稳定等特性,成为我们日常工作与学习中不可或缺的一部分。然而,面对这些文件时,许多人都会遇到一个共同的难题:如何高效、专业地编辑PDF内容?今天,我要…...

VUE 页面生命周期基本知识点

在 Vue.js 中,页面生命周期(更准确地说是组件生命周期)指的是组件从创建到销毁的一系列过程。了解这些生命周期钩子可以帮助我们更好地管理组件的状态和行为。以下是 Vue 组件的主要生命周期钩子: beforeCreate 在实例初始化之后&…...

windows查看mysql的版本(三种方法)

方法一:在win r 打开 cmd,在cmd命令状态下:mysql --help 回车即可 方法二:在mysql客户端窗口状态下:输入status并回车即可 在计算机开始菜单搜索以上应用打开即可进入mysql客户端窗口。 方法三:在mys…...

Redis批量删除指定前缀的key

在redis-cli中键入命令,批量删除前缀为business_login_tokens:的key: eval "return redis.call(del, unpack(redis.call(keys, ARGV[1])))" 0 business_login_tokens:*在Redis中,EVAL命令用于执行Lua脚本。这个特定的命令是用来批…...

机器学习实验------Adaboost算法

第1关:什么是集成学习 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 第2关: Boosting 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 第3关:Adaboost算法流程 任务描述 本关任务:用Python实现Adaboost,并通过鸢尾花数据集…...

点云处理中阶 Octree模块

一、什么是Octree 八叉树(Octree)是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般中心点作为节点的分叉中…...

Nginx实现负载均衡与故障检查自动切换

创作灵感来源于个人项目的一个稳定性规划,单节点的项目稳定性方面可能有很大的缺漏,因此需要升级为多节点,保证服务故障后,依然有其他服务可用,不会给前端用户造成影响。 (前面讲选型,想直接看…...

2024年学浪视频怎么下载到手机相册

随着2024年的到来,学浪平台继续为广大学习者提供优质的在线教育资源。然而,如何将这些宝贵的视频内容下载到手机相册,方便随时离线观看呢?无论您是想在旅途中学习,还是希望在没有网络的情况下复习课程,本文…...

【北京市政府网_注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

工作中的冲突,职场人士应如何化解

在职场中,冲突和分歧是不可避免的现象。它们可能来源于工作分配不均、目标不一致、价值观差异或个性不合等。面对这些冲突和分歧,我们需要具备有效的冲突管理技巧来化解问题,以维持团队的和谐与工作效率。 分析冲突的原因至关重要。通常来说&…...

企业级大数据平台建设方案

企业级大数据平台建设方案 方案简介硬件软件分布式存储:Foreman作为集群管理工具Sparkcloudera 方案简介 该方案是多年前在Roadstar.ai任职时的建设方案,现将方案部分细节开源,结合本博客的其他文章,能够建立可靠的企业大数据平台…...

HTML语义化标签:为何它们如此重要?

HTML语义化标签:为何它们如此重要? 引言1. HTML语义化标签的基本概念2. HTML语义化标签的作用2.1 提升网页可读性2.2 增强可访问性2.3 优化搜索引擎排名2.4 提高性能 3. 代码示例结尾讨论 引言 在前端开发的世界里,HTML作为构建网页的基础语…...

详细介绍一下Votenet的工作原理及流程

Votenet是一种基于深度学习的三维目标检测和实例分割方法,其工作原理主要包括两个步骤:候选框生成和目标分类与分割。 1.候选框生成: 首先,Votenet通过将三维点云数据转化为连续的坐标网格,将三维目标检测问题转化为二…...

使用Autofit.js和React实现自适应布局

1. 什么是Autofit.js? Autofit.js是一个用于自适应网页布局的JavaScript库,它可以根据元素的尺寸和屏幕的大小,自动调整布局和排列方式,以适应不同的设备和分辨率。它提供了简单易用的API,可以帮助我们轻松实现各种自…...

Kafka之【存储消息】

Kafka之【存储消息】...

鸿蒙开发配置官方地图

一共需要配置 p12 p7b cer csr 四个文件 p12文件配置 注意创建文件名必须是.p12 到AGC创建项目 AppGallery Connect 添加自己的项目名称 我没有开启 暂时不需要 看个人需求 下载刚创建的cer证书 回到我的项目中 点击刚创建的项目 点击这里 四个文件齐全了 "metadata&qu…...

《天道》丁元英格律诗商业案例完整拆解(上)

目录 公司启动缘由 我们开公司也好、做任何其他事请也罢。 1997 年 3 月: 北京摆摊、租店面、仓库: 1997 年 4 月前: 向斯雷克音响店下订货单; 1997 年 6 月: 格林、伦敦、巴黎三个城市当托; 1998 …...

2024年山东省安全员C证证模拟考试题库及山东省安全员C证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年山东省安全员C证证模拟考试题库及山东省安全员C证理论考试试题是由安全生产模拟考试一点通提供,山东省安全员C证证模拟考试题库是根据山东省安全员C证最新版教材,山东省安全员C证大纲整理…...

Cursor Free VIP:突破AI编程助手限制的开源解决方案

Cursor Free VIP:突破AI编程助手限制的开源解决方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial…...

哈希冲突实战:用链地址法+表头插入优化你的查找性能(以LeetCode风格题为例)

哈希冲突实战:用链地址法表头插入优化你的查找性能(以LeetCode风格题为例) 哈希表是算法面试中的常客,但真正能说清楚其底层优化细节的开发者并不多。最近在帮团队面试候选人时,我发现90%的人能说出链地址法的基本概念…...

K8s定时任务实战:如何用CronJob每分钟输出Hello World(附表达式详解)

K8s定时任务实战:从Hello World到生产级CronJob配置 在云原生技术栈中,定时任务作为自动化运维的核心组件,其重要性不言而喻。Kubernetes提供的CronJob资源,让开发者能够以声明式的方式管理周期性任务,而无需依赖传统…...

适合自动化测试练习的免费 API 清单

免费接口-聚合网站 https://www.juhe.cn/ 适合自动化测试练习的免费 API 清单,按场景分类,覆盖 REST/GraphQL、状态码验证、自定义 Mock 与真实数据,可直接用于接口测试(含 Python+pytest)练习。 一、核心免费 API 清单(按场景) 表格 名称 类型 核心用途 特点 访问方式…...

5个简单步骤掌握LiteDB.Studio:免费开源的LiteDB数据库终极GUI管理工具

5个简单步骤掌握LiteDB.Studio:免费开源的LiteDB数据库终极GUI管理工具 【免费下载链接】LiteDB.Studio A GUI tool for viewing and editing documents for LiteDB v5 项目地址: https://gitcode.com/gh_mirrors/li/LiteDB.Studio 在当今数据驱动的软件开发…...

Open-AutoGLM在社交通讯中的应用:自动发微信、刷朋友圈演示

Open-AutoGLM在社交通讯中的应用:自动发微信、刷朋友圈演示 1. 项目概述 1.1 什么是Open-AutoGLM Open-AutoGLM是一款基于视觉语言模型的AI手机智能助理框架。它能通过自然语言指令理解用户需求,自动操控安卓设备完成各种任务。想象一下,只…...

忍者像素绘卷参数详解:CFG/Steps/画幅三要素调优指南

忍者像素绘卷参数详解:CFG/Steps/画幅三要素调优指南 1. 认识忍者像素绘卷 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,它将忍者的热血意志与16-Bit复古游戏美学完美融合。这款工具采用明亮的"云端"视觉设计,…...

QMC解码器终极指南:3步实现加密音乐格式转换的高效解决方案

QMC解码器终极指南:3步实现加密音乐格式转换的高效解决方案 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder QQ音乐下载的加密音频文件格式限制跨平台播放&#…...

从ATE到RPE:用evo全面解读你的SLAM算法在KITTI上的表现

从ATE到RPE:用evo全面解读你的SLAM算法在KITTI上的表现 在SLAM算法开发中,量化评估是验证算法性能的关键环节。KITTI数据集作为自动驾驶领域最具影响力的基准测试平台之一,为研究者提供了丰富的真实场景数据。但如何从海量轨迹数据中提取有价…...

企业财务系统集成指南:如何用诺诺开放平台API搞定电子发票全流程(从签约到开票)

企业财务系统集成指南:诺诺开放平台电子发票全流程实战 当财务数字化转型成为企业降本增效的刚需,电子发票作为交易闭环的关键环节,其系统集成质量直接影响业务流畅度。本文将带您全景式拆解从商务对接到技术落地的完整链路,避开那…...