在Yii2中自定义S3上传文件的URL,可以通过以下步骤实现:
composer require --prefer-dist yiisoft/yii2-aws
config/web.php
或config/main.php
文件,添加以下代码:'components' => [
's3' => [
'class' => 'yii\aws\s3\S3Client',
'credentials' => [
'key' => 'YOUR_AWS_ACCESS_KEY',
'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
],
'region' => 'YOUR_AWS_REGION',
'version' => 'latest',
],
],
请替换YOUR_AWS_ACCESS_KEY
、YOUR_AWS_SECRET_ACCESS_KEY
和YOUR_AWS_REGION
为你的AWS访问凭证和区域。
use yii\web\UploadedFile;
// ...
public function actionUpload()
{
$file = UploadedFile::getInstanceByName('file'); // 获取上传的文件
if ($file !== null) {
$s3 = Yii::$app->s3; // 获取S3组件实例
$bucket = 'YOUR_S3_BUCKET'; // 替换为你的S3存储桶名称
$key = 'path/to/save/' . $file->name; // 替换为你希望保存的文件路径和名称
// 上传文件到S3
$result = $s3->putObject([
'Bucket' => $bucket,
'Key' => $key,
'Body' => fopen($file->tempName, 'rb'),
'ACL' => 'public-read', // 设置文件为公开可读
]);
if ($result['@metadata']['statusCode'] === 200) {
$url = $s3->getObjectUrl($bucket, $key); // 获取上传后的文件URL
// 处理上传成功的逻辑
} else {
// 处理上传失败的逻辑
}
} else {
// 处理未找到上传文件的逻辑
}
}
请替换YOUR_S3_BUCKET
为你的S3存储桶名称,并根据需要修改保存文件的路径和名称。
通过以上步骤,你可以在Yii2中自定义S3上传文件的URL。在上传文件后,可以通过$s3->getObjectUrl($bucket, $key)
获取上传后的文件URL,然后根据业务需求进行处理。
领取专属 10元无门槛券
手把手带您无忧上云