php实现oss
PHP 实现 OSS 文件上传
使用 PHP 实现阿里云 OSS(对象存储服务)的文件上传功能,可以通过官方提供的 SDK 完成。以下是具体实现步骤:
安装 OSS SDK
通过 Composer 安装阿里云 OSS SDK:
composer require aliyuncs/oss-sdk-php
初始化 OSS 客户端
在 PHP 文件中引入 SDK 并初始化 OSS 客户端:
require_once __DIR__ . '/vendor/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = 'your-access-key-id';
$accessKeySecret = 'your-access-key-secret';
$endpoint = 'oss-cn-hangzhou.aliyuncs.com'; // 替换为你的 OSS Endpoint
$bucket = 'your-bucket-name';
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
print $e->getMessage();
}
上传文件到 OSS
使用 uploadFile 方法上传本地文件到 OSS:
$object = 'path/to/your/file.jpg'; // OSS 中的文件路径
$filePath = '/local/path/to/file.jpg'; // 本地文件路径
try {
$ossClient->uploadFile($bucket, $object, $filePath);
echo "文件上传成功";
} catch (OssException $e) {
echo "文件上传失败: " . $e->getMessage();
}
上传内存中的内容
如果需要上传内存中的字符串或二进制数据,可以使用 putObject 方法:
$content = 'Hello, OSS!';
$object = 'path/to/your/object.txt';
try {
$ossClient->putObject($bucket, $object, $content);
echo "内容上传成功";
} catch (OssException $e) {
echo "内容上传失败: " . $e->getMessage();
}
PHP 实现 OSS 文件下载
下载文件到本地
使用 getObject 方法将 OSS 文件下载到本地:
$object = 'path/to/your/file.jpg';
$localfile = '/local/path/to/save/file.jpg';
try {
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $localfile
);
$ossClient->getObject($bucket, $object, $options);
echo "文件下载成功";
} catch (OssException $e) {
echo "文件下载失败: " . $e->getMessage();
}
获取文件内容
直接获取 OSS 文件的内容而不保存到本地:
$object = 'path/to/your/file.txt';
try {
$content = $ossClient->getObject($bucket, $object);
echo "文件内容: " . $content;
} catch (OssException $e) {
echo "获取文件内容失败: " . $e->getMessage();
}
PHP 实现 OSS 文件管理
列出 OSS 文件
列出指定 Bucket 中的文件:
try {
$listOptions = array(
'max-keys' => 10, // 最多列出 10 个文件
'prefix' => 'path/to/your/' // 指定前缀
);
$list = $ossClient->listObjects($bucket, $listOptions);
foreach ($list->getObjectList() as $object) {
echo "文件: " . $object->getKey() . "\n";
}
} catch (OssException $e) {
echo "列出文件失败: " . $e->getMessage();
}
删除 OSS 文件
删除 OSS 中的指定文件:
$object = 'path/to/your/file.jpg';
try {
$ossClient->deleteObject($bucket, $object);
echo "文件删除成功";
} catch (OssException $e) {
echo "文件删除失败: " . $e->getMessage();
}
注意事项
- 确保阿里云 OSS 的 Bucket 和 Endpoint 配置正确。
- 使用 HTTPS 协议时,Endpoint 需要设置为
https://开头。 - 上传大文件时,可以使用分片上传功能以提高效率和稳定性。







