Puncte:0

Cum să setați în mod programatic valoarea unui câmp de fișier criptat

drapel je

Încerc să setez valoarea unui câmp de fișier criptat în mod programatic. eu folosesc Fișiere criptate modul. Am configurat cu succes un câmp de fișier și funcționează pentru conținutul creat folosind formularul de adăugare a nodului.

Într-un cod personalizat, primesc un fișier folosind HttpClient și doriți să vă atașați la un media. Aș putea obține fișierul, cripta și salva. Cu toate acestea, dacă vreau să deschid fișierul, acesta este rupt.

Ceea ce fac eu este așa:

  $client = Drupal::httpClient();

  // Obțineți date de pe pagina de la distanță și criptați folosind profilul de criptare
  $date = (șir) $client->get('https://example.com/download.php?file=123')
    ->getBody();
  $encryptionProfile = Drupal::entityTypeManager()
    ->getStorage('profil_criptare')
    ->load('profilul_my_encryption');
  $encryptedData = Drupal::service('criptare')
    ->encrypt($date, $encryptionProfile);

  // Creați o entitate media și pregătiți directorul de destinație
  $media = Drupal::entityTypeManager()->getStorage('media')
    ->create(['bundle' => 'my_media_type']);
  $destination = 'encrypt://my_encryption_profile/path/to/files'
  Drupal::service('sistem_fișier')
    ->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY);

  // Salvați datele ca fișier și atașați-le la media
  $filename = 'descărcare.pdf';
  $file = file_save_data($encryptedData, $destination . '/' . $filename);
  $media->set('fișier_criptat', ['target_id' => $fișier->id()]);
  $media->salvare();
drapel cn
Învelișul de flux „criptare” este _un înveliș de schemă care criptează/decriptează automat_ - așa că este posibil să vă dublați prin criptarea datelor dvs.
Елин Й. avatar
drapel je
De asemenea, mă așteptam la același lucru, dar dacă folosesc `$data` în loc de `$encryptedData` precum `file_save_data($data, $destination . '/' . $filename)`, fișierul este salvat fără criptare și pot deschide acesta pe sistemul de fișiere. Descărcarea fișierului prin stream wrapper-ul încă nu funcționează.
Елин Й. avatar
drapel je
@Clive mulțumesc că mi-ai arătat direcția corectă. Mai întâi descărcam fișierul cu `httpClient` și apoi îl salvam folosind `file_save_data`. Acest lucru a fost cumva sări peste pachetul de scheme din orice motiv. De aceea am încercat să-l criptez manual înainte de a salva. Am schimbat codul și am folosit `httpClient` direct pentru a descărca în destinație și a funcționat fără criptare manuală! Voi posta soluția detaliată în zilele următoare de îndată ce voi avea timp.

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.