标签归档:OSS

使用PHP阿里云OSS上传文件

1.安装PHP

http://windows.php.net/download/,安装5.6+的PHP环境,我使用的php-7.4.9-nts-Win32-vc15-x64,解压后把ext目录下的php_curl.dll复制到C:/Windows/System32下,在php.ini中取消掉extension=curl前面的分号注释。

我的电脑右击选择属性,然后按照高级系统设置 -> 高级 -> 环境变量,进入环境变量属性页,在系统变量中把%PHP_INSTALL_DIR%/php-7.4.9-nts-Win32-vc15-x64加入Path。

在Dos命令行中输入命令php -v,如果显示PHP的版本号,说明安装成功。

2.安装composer

下载composer。打开https://getcomposer.org/download/,从Manual Download中下载当前最新版本1.1.2。下载到本地的文件是composer.phar。

把composer.phar复制到%PHP_INSTALL_DIR%/php-7.4.9-nts-Win32-vc15-x64,并在php-7.4.9-nts-Win32-vc15-x64目录下创建文本文件composer.bat,添加如下内容:

@php %~dp0composer.phar %*

在DOS命令行中执行命令composer --version,如果显示composer的版本号,说明安装成功。

在DOS命令行窗中执行如下命令配置composer:

composer config -g disable-tls true
composer config -g secure-http false
composer config -g repositories.packagist composer http://packagist.phpcomposer.com

3.安装phar-composer

下载phar-composer。打开https://github.com/clue/phar-composer,在DOS命令行中进入代码目录phar-composer-master,执行命令composer install。然后执行命令php -d phar.readonly=off bin/phar-composer build,完成后会生成phar-composer.phar。

把phar-composer.phar复制到%PHP_INSTALL_DIR%/php-7.4.9-nts-Win32-vc15-x64,并在php-7.4.9-nts-Win32-vc15-x64目录下创建文本文件phar-composer.bat,添加如下内容:

@php %~dp0phar-composer.phar %*

在DOS命令行中执行命令phar-composer --version,如果显示phar-composer的版本号,说明安装成功。(见下图)

4.编译OSS PHP SDK

打开https://github.com/aliyun/aliyun-oss-php-sdk,下载解压到目录aliyun(可自行重命名),在DOS命令行进入代码目录aliyun,执行命令composer install下载依赖包。然后执行命令
php -d phar.readonly=off %PHP_INSTALL_DIR%/php-5.6.22-Win32-VC11-x64/phar-composer.phar build . aliyun-oss-php-sdk.phar,完成后会生成OSS PHP SDK包aliyun-oss-php-sdk.phar。

5.运行OSS PHP SDK测试程序

<?php
require_once 'aliyun-oss-php-sdk.phar';

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

//参考https://developer.aliyun.com/ask/2061的endpoint列表
$endpoint = "http://oss-cn-beijing.aliyuncs.com";  // http://oss-cn-hangzhou.aliyuncs.com
$accessKeyId = "在OSS控制台获取";
$accessKeySecret = "在OSS控制台获取";
$bucket = "你的bucket名字";
    
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    
    // list bucket
    $bucketListInfo = $ossClient->listBuckets();
    $bucketList = $bucketListInfo->getBucketList();
    print("bucketList:\n");
    foreach($bucketList as $buck) {
        print($buck->getLocation() . "\t" . $buck->getName() . "\t" . $buck->getCreatedate() . "\n");
    }
    
    // list objects
    $options = array();
    $listObjectInfo = $ossClient->listObjects($bucket, $options);
    $objectList = $listObjectInfo->getObjectList();
    if (!empty($objectList)) {
        print("objectList:\n");
        foreach ($objectList as $objectInfo) {
            print($objectInfo->getKey() . "\t" . $objectInfo->getSize() . "\t" . $objectInfo->getLastModified() . "\n");
        }
    }
    
    // put object
    $object = "php-test-key";
    $content = "Hello, OSS!";
    $ossClient->putObject($bucket, $object, $content);
    
    // get object
    $content = $ossClient->getObject($bucket, $object);
    print("key is fetched, the content is: " . $content);
    
    // delete object
    $ossClient->deleteObject($bucket, $object);
} catch (OssException $e) {
    print($e->getMessage() . "\n");
    return;
}
?>

把aliyun-oss-php-sdk.phar复制test_oss.php的同级目录。在DOS命令行进入test.php,执行命令php test.php运行测试程序,成果结果如下:

6.上传图片

<?php
require_once 'aliyun-oss-php-sdk.phar';

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

// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
$endpoint = "http://oss-cn-beijing.aliyuncs.com";  // http://oss-cn-hangzhou.aliyuncs.com
$accessKeyId = "OSS控制台获取";
$accessKeySecret = "OSS控制台获取";
$bucket = "你的bucket名";
// 设置文件名称。
$object = "head/pic1.png"; //包括文件夹的目的路径
// <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
$filePath = "I:\www\sanguo\aliyun\coffe.png"; //源文件本地路径

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

    $ossClient->uploadFile($bucket, $object, $filePath);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");

在DOS命令行进入upfile.php,执行命令php upfile.php运行测试程序,成功结果如下:

可以在OSS控制台看到图片上传成功。

参考:Windows下编译使用Aliyun OSS PHP SDK
安装 OSS PHP SDK
OSS PHP简单上传
OSS开通Region和Endpoint对照表