Кусок кода, который продолжает выдавать эту ошибку:
RuntimeException: SplFileObject::__construct(86a03f5ac14227ae4e596750c3a90db1612f77ce1b00e4aa6cbd4b2dc5e69835.icturee.jpg): failed to open stream: No such file or directory in /home/site/vendor/tray-labs/oracle-storage/src/Object/File.php:42 Stack trace: #0 /home/site/vendor/tray-labs/oracle-storage/src/Object/File.php(42): SplFileObject->__construct('86a03f5ac14227a...') #1 /home/site/vendor/tray-labs/oracle-storage/src/Service/UploadService.php(25): TrayLabs\OracleStorage\Object\File->getFile() #2 /home/site/vendor/tray-labs/oracle-storage/src/OracleStorage.php(64): TrayLabs\OracleStorage\Service\UploadService->handle('86a03f5ac14227a...', Object(TrayLabs\OracleStorage\Object\File)) #3 /home/site/includes/storageProcessor.php(15): TrayLabs\OracleStorage\OracleStorage->upload('86a03f5ac14227a...', Object(TrayLabs\OracleStorage\Object\File)) #4 /home/site/wwwroot/chumba.html(470): storeFile(Object(TrayLabs\OracleStorage\OracleStorage), '86a03f5ac14227a...', '86a03f5ac14227a...') #5 {main}
Я старался изо всех сил следовать документу интеграции пакета хранения лотков \ oracle, например:
- Добавьте эту строку в файл composer. json в папку root проекта веб-приложения
require traylabs/oracle-storage
Выполните эту команду, чтобы установить пакет в каталоге поставщиков
php composer.phar update
Создать файл конфигурации
conf.php
return [ 'user'=>[
'username'=>'example@gmail.com',
'password'=>'#password'
], 'account'=>[
'identifier'=>'bucket',
'auth_url'=>'https://oraclecloud.com/object-storage/buckets/f4yay/items'
], 'storage'=>[
'container'=>'items',
'local_path'=>'/home/site/wwwroot/destination/',
'cache'=>true
] ];
создание файла
processing.php
для инкапсуляции функции загрузки файла в облако, как показано:
<?php
use \TrayLabs\OracleStorage\OracleStorage;
use \TrayLabs\OracleStorage\Object\File;
use \TrayLabs\OracleStorage\ExceptionFileNotFound;
require_once("../vendor/autoload.php");
function getClient() {
$client=new OracleStorage(require '/home/site/includes/Conf.php');
return $client;
}
//utility
function storeFile($client,$filename) {
$calledname=$client->upload("$filename", new File($filename));
return $calledname;
}
?>
включает файл
processing.php
с помощью функции
require_once()
в нескольких
products.html
файлах, из которых файлы изображений, например jpeg / ping et c, будут загружены на сервер веб-приложений, а затем в облачное хранилище объектов oracle как показано здесь под:
<?php
use \TrayLabs\OracleStorage\OracleStorage;
use \TrayLabs\OracleStorage\Object\File;
use \TrayLabs\OracleStorage\ExceptionFileNotFound;
require_once('./../includes/processing.php');
require_once("./../vendor/autoload.php");
if ($_SERVER["REQUEST_METHOD"]=="POST")
{
if ($_FILES['picha']['error'] == UPLOAD_ERR_OK)
{
$tmpName = $_FILES['picha']['tmp_name'];
$name = basename($_FILES['picha']['name']);
$ext = strtolower(substr($name, strripos($tmpName, '.')+1));
$filename = hash_file('sha256', $tmpName) . '.' . $ext;
$destination=__DIR__."/warehouse/$filename";
$message=move_uploaded_file($tmpName,$destination);
$filepath=$destination;
$contents=fopen($filepath,'r');//getfilecontents($filepath);
try
{
$client=new getClient();
$itemname=storeFile($client,$filename);
}
catch(Exception $ex)
{
$ex->getMessage();
echo $ex;
}
unlink($destination);
//some more code goes here
}
}
?>
Для краткости я удалил некоторый код, такой как html элементы формы и другие связанные элементы данных для конкретного продукта