Решения для traylabs / oracle -storage PHP Веб-API Интеграция - PullRequest
0 голосов
/ 27 февраля 2020

Кусок кода, который продолжает выдавать эту ошибку:

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, например:

  1. Добавьте эту строку в файл 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 элементы формы и другие связанные элементы данных для конкретного продукта

1 Ответ

0 голосов
/ 28 февраля 2020

У меня есть решение. Я вспомнил кое-что, что я должен был включить в контрольный список. Я просто зашел в консоль kudu для своего приложения, которое размещено в службе приложений azure, и изменил владельца папки, в которой я сохранил мультимедийные файлы, на www-data, и вскоре после повторного тестирования мое приложение работает нормально, как и предполагалось. делаем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...