如何使用 PHP 操作亚马逊 S3 对象云存储

devtools/2025/1/14 14:18:53/

以下是使用PHP与亚马逊S3对象云存储(也有其他支持S3协议的云存储服务,原理类似)进行交互的常见文档接口使用示例,涵盖了基本的操作如上传文件、下载文件、删除文件、列举文件等内容。

### 前提条件
1. 首先,你需要获取相应云存储服务(以亚马逊S3为例)的访问密钥(Access Key)和秘密访问密钥(Secret Access Key),这些将用于在PHP代码中进行身份验证。
2. 确保你的服务器环境已经安装了PHP,并且支持相关的扩展(如 `aws/aws-sdk-php` 扩展,用于和S3交互)。可以通过 `composer` 安装该扩展,在项目目录下执行命令 `composer require aws/aws-sdk-php`。

### 连接到S3存储服务
以下是一段基本的PHP代码示例,用于初始化与S3的连接:```php

php"><?php
require'vendor/autoload.php'; // 引入自动加载文件(通过composer安装扩展后生成)use Aws\S3\S3Client;// 创建S3客户端实例$client = new S3Client(['version' => 'latest','endpoint' => $this->config['domain'],'region' =>$this->config['region'], // 替换为你的S3存储区域,比如 'us-east-1''credentials' => ['key' => $this->config['access_key'], // 替换为实际的访问密钥'secret' => $this->config['secret_key'], // 替换为实际的秘密访问密钥],'http' => [ 'verify' => false, ],'use_path_style_endpoint' => true,
/*
路径风格(Path-Style):而 use_path_style_endpoint 配置选项用于强制客户端采用路径风格的请求格式来发送请求。当启用这个配置后,请求的 URL 会变成 
https://s3.<region>.amazonaws.com/<bucket-name>/<object-key>
,比如 
https://s3.us-east-1.amazonaws.com/my-bucket/images/picture.jpg
。这种格式把存储桶名称放在路径中,更像是传统的基于路径的资源访问方式*/    
]);?>


```

### 文件上传操作
以下代码展示如何将本地文件上传到S3存储桶中:```php

php"><?php
// 假设前面已经创建好$client实例$bucket ='my-bucket'; // 替换为你在S3中的存储桶名称
$key = 'path/to/uploaded/file.txt'; // 文件在S3存储桶中的键(路径+文件名),可自行定义
$source = '/path/to/local/file.txt'; // 本地文件的实际路径try {$result = $client->putObject(['Bucket' => $bucket,'Key' => $key,'SourceFile' => $source,]);echo "文件上传成功";
} catch (Exception $e) {echo "文件上传失败: ". $e->getMessage();
}
?>


```

### 文件下载操作
下面是从S3存储桶中下载文件到本地的示例代码:

php">```php
<?php
$bucket ='my-bucket';
$key = 'path/to/downloaded/file.txt';
$destination = '/path/to/local/save/file.txt'; // 本地保存文件的路径try {$client->getObject(['Bucket' => $bucket,'Key' => $key,'SaveAs' => $destination,]);echo "文件下载成功";
} catch (Exception $e) {echo "文件下载失败: ". $e->getMessage();
}
?>
```

### 文件删除操作
以下示例用于删除S3存储桶中的指定文件:

php">```php
<?php
$bucket ='my-bucket';
$key = 'path/to/delete/file.txt';try {$result = $client->deleteObject(['Bucket' => $bucket,'Key' => $key,]);echo "文件删除成功";
} catch (Exception $e) {echo "文件删除失败: ". $e->getMessage();
}
?>
```

### 列举存储桶中的文件
这段代码可以列出指定S3存储桶中的部分或全部文件:

php">```php
<?php
$bucket ='my-bucket';try {$objects = $client->listObjects(['Bucket' => $bucket,]);foreach ($objects['Contents'] as $object) {echo $object['Key']. "\n";}
} catch (Exception $e) {echo "获取文件列表失败: ". $e->getMessage();
}
?>


```

以上只是一些基础的操作示例,S3对象云存储通过PHP接口还可以实现更多复杂功能,比如设置文件的访问权限(ACL)、生成预签名的URL(用于临时授权访问文件等情况)等。你可以根据实际需求,进一步查阅 `aws/aws-sdk-php` 扩展的官方文档(https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html)来深入学习和实现更多功能。 


 


http://www.ppmy.cn/devtools/150426.html

相关文章

Vue.js Ajax(vue-resource)

Vue 要实现异步加载需要使用到 vue-resource 库。 Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。 <script src"https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script> Get 请求 以下是一个简单的 Get 请求实例&#x…

Windows 蓝牙驱动开发-简介

蓝牙(英语&#xff1a;Bluetooth)是一种无线通信技术标准&#xff0c;用来让固定与移动设备&#xff0c;在短距离间交换资料&#xff0c;以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波&#xff0c;经由2.4至2.485 GHz的ISM频段来进行通信。1994年由电信商爱立信(Erics…

迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-新增 topeet子系统

在 Openharmony 源码根目录下新建 topeet 文件夹及其文件夹下的文件。目录如下所示&#xff1a; 接下来依次解释一下每个文件的作用。 bundle.json&#xff1a; demos&#xff1a;组件目录 hdf_led&#xff1a;子组件目录 app&#xff1a;led 应用层目录 ├── BUILD.gn&#…

从字符串使用看Golang和Rust对内存使用的区别

从字符串使用看Golang和Rust对内存使用的区别 ​ 今天从Rust偶然回到Golang的世界&#xff0c;怎么写代码怎么别扭&#xff0c;总是忍不住在句子结尾加个分号…看到golang的字符串使用起来特别爽可以到处复制疯狂乱用&#xff0c;有一种从部队宿舍豆腐块被子的生活回归到居家肥…

监控易钢铁行业:IT 设备、动环设施全方位一体化监控

在当今数字化浪潮汹涌澎湃的时代&#xff0c;各行业对信息技术的依赖程度日益加深&#xff0c;钢铁行业亦不例外。作为钢铁行业的中流砥柱&#xff0c;某钢铁公司在贸易、信息科技、循环经济和物流等多元业务领域开疆拓土&#xff0c;取得了斐然佳绩。 然而&#xff0c;随着业务…

【华为OD-E卷 - 篮球比赛 100分(python、java、c++、js、c)】

【华为OD-E卷 - 篮球比赛 100分&#xff08;python、java、c、js、c&#xff09;】 题目 篮球(5V5)比赛中&#xff0c;每个球员拥有一个战斗力&#xff0c;每个队伍的所有球员战斗力之和为该队伍的总体战斗力。 现有10个球员准备分为两队进行训练赛&#xff0c;教练希望2个队…

【PPTist】插入形状、插入图片、插入图表

一、插入形状 插入形状有两种情况&#xff0c;一种是插入固定的形状&#xff0c; 一种是插入自定义的形状。 插入固定的形状时&#xff0c;跟上一篇文章 绘制文本框 是一样一样的&#xff0c;都是调用的 mainStore.setCreatingElement() 方法&#xff0c;只不多传的类型不一…

PHP语言的学习路线

PHP语言的学习路线 PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛使用的开源服务器端脚本语言&#xff0c;尤其适用于Web开发。由于其易学易用、功能强大&#xff0c;PHP成为了许多动态网站和Web应用程序开发的首选语言。随着Web3.0和云计算的兴起&#xff0c…