Puncte:1

Cum pot stoca o imagine base64 în folderul privat al site-ului meu?

drapel cn

Încerc să stochez o imagine base64 dintr-un plugin de câmp Signature (plugin-ul scoate un text base64). Dar înainte de a-l putea stoca în folderul privat, trebuie mai întâi să îl convertesc ca imagine png. Acesta este modul în care o fac în mod normal dacă doar încarc o imagine:

    // Câmp de semnătură pe FormBuilder
    $form['semnătura'] = [
        '#type' => 'fișier_gestionat',
        '#title' => $this->t('Semnătura'),
        '#upload_location' => 'private://requestformfiles',
        '#upload_validators' => [
        'file_validate_extensions' => ['png jpg',],
        ],
    ];

    // Pre-salvare
    $imagine = $form_state->getValue('semnătura');
    $fisier = File::load( $imagine[0] );
    $fișier->setPermanent();
    $fișier->salvare(); 

Dar cu o imagine base64, trebuie să fac asta mai întâi:

    $imagine = $form_state->getValue('semnătura');
    $date = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $image));
    file_put_contents('storage/signature.png', $date);

Problema mea este cu fișier_put_conținut. Locația de salvare se face de obicei în „#upload_location”, dar nu știu cum să fac asta în fișier_put_conținut.

Orice ajutor este apreciat!

Puncte:1
drapel cn

fișier_put_conținut acceptă împachetări de flux, deci:

file_put_contents('private://path/to/storage/signature.png', $data);
drapel cn
Dang, nu știam că funcționează și asta. Acum problema mea este `File::load` nu prea „vede” fișierul meu în `file_put_contents`, așa că nu îl pot seta în `file_managed`

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.