Am un script personalizat care importă conținut dintr-o bază de date externă.
Atașez fișiere folosind codul personalizat de mai jos.
$file = File::create([
  'filename' => $new_filename,
  'uri' => $folder_uri . '/' . $new_filename,// private://my_content_type/<subdir>/filename.pdf
]);
$fișier->setPermanent();
$fișier->salvare();
Odată ce partea de mai sus este completă, apoi atașați acel fișier(e) la noul nod folosind codul personalizat de mai jos.
$storage_handler = \Drupal::entityTypeManager()->getStorage("nod");
$date = [
    'type' => 'tipul_meu_conținut',
    'title' => 'Un titlu',
    'status' => 1,
    ...
    'field_attach' => ['target_id' => $fișier->fid->valoare],
    ...
  ];
$nod = $storage_handler->create($date);
$nod->salvare();
Când editez același nod, văd atașat fișierul corect, dar în timp ce îl deschid în previzualizare, primesc „Acces refuzat”, chiar și eu sunt logat ca administrator.
Cu toate acestea, câmpul field_attach este unul multiplu și dacă atașez manual un alt fișier din pagina de editare și îl salvez, atunci îl pot previzualiza corect.
depanare:
Aceasta este partea de dezvoltare pentru nod:
[field_attach] => Matrice
(
    [x-default] => Matrice
    (
        [0] => Matrice
        (
            [target_id] => 1876 // Nu se poate previzualiza, acces refuzat
            [afișare] => 1
            [descriere] => 
        )
        [1] => Matrice
        (
            [target_id] => 1878 // Se poate previzualiza
            [afișare] => 1
            [descriere] => 
        )
    )
)
În baza de date, fiecare fișier are aceleași valori:
# selectați * din file_usage unde fid in(1876, 1878)\G
**************************** 1. rând ******************** ******
   fid: 1876
modul: dosar
  tip: nod
    id: 92
 număr: 1
**************************** 2. rând ******************** ******
   fid: 1878
modul: dosar
  tip: nod
    id: 92
 număr: 1
2 rânduri în set (0.000 sec)
# selectați * din file_managed unde fid in(1876, 1878)\G
**************************** 1. rând ******************** ******
     fid: 1876
    uuid: 876c1bd1-566c-4d6b-a767-4925d75b593f
langcode: it
     uid: 1
nume de fișier: primul_fișier.pdf
     uri: private://my_content_type/201211/first_file.pdf
filemime: aplicație/pdf
dimensiune fișier: 140982
  stare: 1
 creat: 1651744379
 schimbat: 1651744379
**************************** 2. rând ******************** ******
     fid: 1878
    uuid: 4c26c169-3e92-4254-af49-e5b203caf4c6
langcode: it
     uid: 1
nume de fișier: al doilea_fișier.pdf
     uri: private://my_content_type/202205/first_file.pdf
filemime: aplicație/pdf
dimensiune fișier: 140982
  stare: 1
 creat: 1651745721
 schimbat: 1651745725
2 rânduri în set (0.000 sec)
Permisiunile sunt aceleași pentru directoare și pentru fișiere.
Ceva este diferit de atașat manual și programatic.
Ai pierdut pentru a seta ceva?
Mulțumesc anticipat.