使用PHP上传文件到oracle云存储

Akh*_*esh 2 php oracle oracle-cloud-infrastructure

我正在查看文档,Oracle sdk看看是否有任何内容可以上传到 Oracle 存储。

但我没有找到任何php sdk东西Oracle,或者我错过了什么?

我研究了很多,请帮助我。我想用来php sdk上传文件和文件夹并将Oracle cloud这些文件 URL 提供给我的应用程序。

Akh*_*esh 8

任何人都在寻找相同的解决方案,所以我已经弄清楚并在这里发布答案。在查看了太多在线参考资料后,我了解到 Oracle 与 Amazon s3 SDK 兼容。因此,您所需要做的就是使用 AWS sdk 并从 Oracle 获取访问密钥和机密,然后就完成了。发布一些代码。

<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;

define('ORACLE_ACCESS_KEY', '***************************************');
define('ORACLE_SECRET_KEY', '***************************************');
define('ORACLE_REGION', '***************************************');
define('ORACLE_NAMESPACE', '***************************************');


function get_oracle_client($endpoint)
{
    $endpoint = "https://".ORACLE_NAMESPACE.".compat.objectstorage.".ORACLE_REGION.".oraclecloud.com/{$endpoint}";

    return new Aws\S3\S3Client(array(
        'credentials' => [
            'key' => ORACLE_ACCESS_KEY,
            'secret' => ORACLE_SECRET_KEY,
        ],
        'version' => 'latest',
        'region' => ORACLE_REGION,
        'bucket_endpoint' => true,
        'endpoint' => $endpoint
    ));
}

function upload_file_oracle($bucket_name, $folder_name = '', $file_name)
{
    if (empty(trim($bucket_name))) {
        return array('success' => false, 'message' => 'Please provide valid bucket name!');
    }

    if (empty(trim($file_name))) {
        return array('success' => false, 'message' => 'Please provide valid file name!');
    }

    if ($folder_name !== '') {
        $keyname = $folder_name . '/' . $file_name;
        $endpoint =  "{$bucket_name}/";
    } else {
        $keyname = $file_name;
        $endpoint =  "{$bucket_name}/{$keyname}";
    }

   
    $s3 = get_oracle_client($endpoint);
    $s3->getEndpoint();
    
    $file_url = "https://objectstorage.".ORACLE_REGION.".oraclecloud.com/n/".ORACLE_NAMESPACE."/b/{$bucket_name}/o/{$keyname}";
    try {
        $s3->putObject(array(
            'Bucket' => $bucket_name,
            'Key' => $keyname,
            'SourceFile' => $file_name,
            'StorageClass' => 'REDUCED_REDUNDANCY'
        ));

        return array('success' => true, 'message' => $file_url);
    } catch (S3Exception $e) {
        return array('success' => false, 'message' => $e->getMessage());
    } catch (Exception $e) {
        return array('success' => false, 'message' => $e->getMessage());
    }
}

function upload_folder_oracle($bucket_name, $folder_name)
{
    if (empty(trim($bucket_name))) {
        return array('success' => false, 'message' => 'Please provide valid bucket name!');
    }

    if (empty(trim($folder_name))) {
        return array('success' => false, 'message' => 'Please provide valid folder name!');
    }

    $keyname = $folder_name;
    $endpoint =  "{$bucket_name}/{$keyname}";
    $s3 = get_oracle_client($endpoint);

    try {
        $manager = new \Aws\S3\Transfer($s3, $keyname, 's3://' . $bucket_name . '/' . $keyname);
        $manager->transfer();
        return array('success' => true);
    } catch (S3Exception $e) {
        return array('success' => false, 'message' => $e->getMessage());
    } catch (Exception $e) {
        return array('success' => false, 'message' => $e->getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码正在运行并经过测试,有关更多详细信息,请访问链接 - https://docs.cloud.oracle.com/en-us/iaas/Content/Object/Tasks/s3knownapi.htm