Рейтинг:1

Как я могу сохранить изображение base64 в личной папке моего сайта?

флаг cn

Я пытаюсь сохранить изображение base64 из плагина поля подписи (плагин выводит текст base64). Но прежде чем я смогу сохранить его в личной папке, я должен сначала преобразовать его в изображение png. Вот как я обычно это делаю, если просто загружаю изображение:

    // Поле подписи в FormBuilder
    $ форма ['подпись'] = [
        '#type' => 'managed_file',
        '#title' => $this->t('Подпись'),
        '#upload_location' => 'private://requestformfiles',
        '#upload_validators' => [
        'file_validate_extensions' => ['png jpg',],
        ],
    ];

    // Предварительное сохранение
    $image = $form_state->getValue('подпись');
    $file = File::load($image[0]);
    $файл->setPermanent();
    $файл->сохранить(); 

Но с изображением base64 я должен сначала сделать это:

    $image = $form_state->getValue('подпись');
    $data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $image));
    file_put_contents('storage/signature.png', $data);

Моя проблема с file_put_contents. Место сохранения обычно делается в '#upload_location', но я не знаю, как это сделать в file_put_contents.

Любая помощь приветствуется!

Рейтинг:1
флаг cn

file_put_contents поддерживает обертки потока, поэтому:

file_put_contents('private://path/to/storage/signature.png', $data);
флаг cn
Дэнг, не знал, что это тоже работает. Теперь моя проблема в том, что `File::load` на самом деле не "видит" мой файл в `file_put_contents`, поэтому я не могу установить его в `file_managed`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.