gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:07:03 26 4
gpt4 key购买 nike

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

但是我没有从 Oracle 中找到任何 php sdk 还是我遗漏了什么?

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

最佳答案

任何人都在寻找相同的解决方案,所以我已经弄清楚并在此处发布了答案。在查看了太多在线引用资料后,我了解到 Oracle 与 Amazon s3 SDK 兼容。因此,您只需要使用 AWS sdk 并从 Oracle 获取访问 key 和 secret 即可。发布一些代码。

<?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());
}
}

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

关于php - 使用PHP上传文件到oracle云存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65370758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com