@kaxa3201

Как исправить Array to string conversion?

$arrayFiles = [];
        foreach ($files as $file) {
            $arrayFiles[] = (StorageFactory::make('minio'))->store($file->getClientOriginalName(),
                file_get_contents($file));
        }

        return $arrayFiles;

Получаю ошибку
Array to string conversion

public function run()
    {
        $matcher = new UrlMatcher($this->routes, $this->requestContext);
        try {
            $this->request->attributes->add($matcher->match($this->request->getPathInfo()));

            $this->controller = $this->getController();

            $this->arguments = $this->getArguments($this->controller);
            $response = $this->executeAction();
        } catch (ResourceNotFoundException $exception) {
            $response = new Response('Not Found', 404);
        } catch (Exception $exception) {
            $response = new Response('An error occurred', 500);
        }

        if (!empty($response) && is_object($response)) {
            $response->send();
        } else {
            echo $response;
        }
    }


указывает на эту строку
else {
echo $response;
}
  • Вопрос задан
  • 88 просмотров
Решения вопроса 2
l3ftoverz
@l3ftoverz Куратор тега PHP
Туды сюды
В какой строке ошибка то происходит, почему нельзя задать вопрос так, что бы на него можно было просто взять и ответить? Почему всю важную для решения вопроса информацию нужно вытягивать силой?

Ошибка говорит о том, что ты передаешь массив туда, куда нужно бы передать строку, PHP пытается как-то там конвертировать на лету, но не получается.
Ответ написан
gzhegow
@gzhegow
Думал, стану умнее, когда адаптируюсь, но нет
Во первых ты пытаешься file_get_contents() от объекта $file. Эта функция на вход хочет строку.
Возможно у твоего обьекта file есть какой-нибудь arrayAccess или __toString() почему-то возвращающий массив

$arrayFiles[] = (StorageFactory::make('minio'))->store($file->getClientOriginalName(), file_get_contents($file));


Может как-то так
file_get_contents($file->getClientFilePath())

функцию getClientFilePath() я с потолка взял. Она не имеет смысла кстати. Путь на клиенте тебе не доступен для чтения. Если это файл отправляемый пользователем там будет что-то $file->getTmpPath(), куда он временно закачался для твоего скрипта и откуда исчезнет если ничего не сделать. И там будет не file_get_contents() а какой-нибудь copy($file->getTmpPath(), $new_location);

Второй код ничего не говорит и даже не вызывает твой $arrayFiles никак не привязан

Что до $response, то если в нем $arrayFiles; то сделать "echo Array()" нельзя без такой ошибки. Сначала Array() нужно конвертировать в строку с помощью json_encode() или там serialize() или другим способом
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы