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.