laravel使用阿里云对象存储OSS官方拓展包oss-sdk-php实现文件存储删除

Song • 351 次浏览 • 0 个回复 • 2018年10月20日

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。这里总结一下如何在laravel中使用OSS PHP SDK完成常见操作,如创建存储空间、上传文件、下载文件等。

一、安装

composer require aliyuncs/oss-sdk-php

安装完成后直接使用即可,不用安装任何依赖,非常方便!不过在此之前你需要去阿里云申请accessKeyIdaccessKeySecret,然后根据你的存储地址设置endpoint即可;大家可以在config中创建一个文件单独存放配置文件,方便后续修改。

二、使用

安装完成我们开始在laravel中使用阿里云OSS

1、创建存储空间

创建存储空间即创建$bucket,如果手动创建了就不需要执行此操作了:

use OSS\OssClient;
use OSS\Core\OssException;

$accessKeyId = "<yourAccessKeyId>";
$accessKeySecret = "<yourAccessKeySecret>";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 存储空间名称
$bucket = "<yourBucketName>";

try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $ossClient->createBucket($bucket);
} catch (OssException $e) {
    print $e->getMessage();
}

2、上传文件

以下代码用于上传文件:

<?php
use OSS\OssClient;
use OSS\Core\OssException;

$accessKeyId = "<yourAccessKeyId>";
$accessKeySecret = "<yourAccessKeySecret>";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 存储空间名称
$bucket= " <yourBucketName>";
// 文件名称
$object = " <yourObjectName>";
$content = "Hi, OSS.";
$filePath = "文件地址";

try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $ossClient->putObject($bucket, $object, $content);
    // $ossClient->uploadFile($bucket, $object, $filePath);
} catch (OssException $e) {
    print $e->getMessage();
}

上传文件详情请参见上传文件。

其中你可以有两种模式,putObject需要将$content内容写到oss中,比如图片的代码,二进制文件!而uploadFile只需要指定文件地址即可,需要完整路径和文件名称。

  • $object是你上传后的文件名称,如果你想要传到文件夹中,可以自动归档,如20180818/123.jpg

3、下载文件

以下代码用于下载文件:

<?php
use OSS\OssClient;
use OSS\Core\OssException;

$accessKeyId = "<yourAccessKeyId>";
$accessKeySecret = "<yourAccessKeySecret>";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 存储空间名称
$bucket= "<yourBucketName>";
// 文件名称
$object = "<yourObjectName>";

try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $content = $ossClient->getObject($bucket, $object);
    print("object content: " . $content);
} catch (OssException $e) {
    print $e->getMessage();
}

下载文件详情请参见下载文件。

4、列举文件

以下代码用于列举指定存储空间下的文件。默认列举100个文件。

<?php
use OSS\OssClient;
use OSS\Core\OssException;

$accessKeyId = "<yourAccessKeyId>";
$accessKeySecret = "<yourAccessKeySecret>";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 存储空间名称
$bucket= "<yourBucketName>";

try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

    $listObjectInfo = $ossClient->listObjects($bucket);
    $objectList = $listObjectInfo->getObjectList();
    if (!empty($objectList)) {
        foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\t" . $objectInfo->getSize() . "\t" . $objectInfo->getLastModified() . "\n");
        }
    }
} catch (OssException $e) {
    print $e->getMessage();
}

列举功能详情请参见管理文件中的列举文件。

5、删除文件

以下代码用于删除指定文件:

<?php
use OSS\OssClient;
use OSS\Core\OssException;

// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
$accessKeyId = "<yourAccessKeyId>";
$accessKeySecret = "<yourAccessKeySecret>";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 存储空间名称
$bucket= "<yourBucketName>";
// 文件名称
$object = "<yourObjectName>";

try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $ossClient->deleteObject($bucket, $object);
} catch (OssException $e) {
    print $e->getMessage();
}

删除文件详情请参见管理文件中的删除文件。

授权以及安全认证

其实还有很多方法,不过平常不太常用,如果又需要直接参考官网即可:阿里云OSS PHP文档


原创文章,转载请注明 :laravel使用阿里云对象存储OSS官方拓展包oss-sdk-php实现文件存储删除 - Laravel学习网
原文出处: https://phpartisan.cn/news/114.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 Laravel使用zipper压缩/解压文件