У меня есть собственный скрипт, который импортирует содержимое из внешней базы данных.
Я прикрепляю файлы, используя приведенный ниже пользовательский код.
$файл = Файл::создать([
'имя_файла' => $ новое_имя_файла,
'uri' => $folder_uri . '/' . $new_filename,// private://my_content_type/<subdir>/filename.pdf
]);
$файл->setPermanent();
$файл->сохранить();
Как только вышеуказанная часть будет завершена, прикрепите эти файлы к новому узлу, используя приведенный ниже пользовательский код.
$storage_handler = \Drupal::entityTypeManager()->getStorage("узел");
$ данные = [
'тип' => 'my_content_type',
'title' => 'Заголовок',
'статус' => 1,
...
'field_attach' => ['target_id' => $file->fid->value],
...
];
$node = $storage_handler->create($data);
$узел->сохранить();
Когда я редактирую тот же узел, я вижу правильный прикрепленный файл, но при его открытии в режиме предварительного просмотра я получаю сообщение «Отказано в доступе», даже если я зарегистрирован как администратор.
Хотя, поле field_attach
является множественным, и если я вручную прикреплю другой файл со страницы редактирования и сохраню его, то я смогу правильно просмотреть его.
отлаживать:
Это часть разработки для узла:
[field_attach] => Массив
(
[x-по умолчанию] => Массив
(
[0] => Массив
(
[target_id] => 1876 // Предварительный просмотр невозможен, доступ запрещен
[отображение] => 1
[описание] =>
)
[1] => Массив
(
[target_id] => 1878 // Можно предварительно просмотреть
[отображение] => 1
[описание] =>
)
)
)
В базе данных каждый файл имеет одинаковые значения:
# выберите * из file_usage, где fid in(1876, 1878)\G
*************************** 1-й ряд ********************** *******
дата: 1876 г.
модуль: файл
тип: узел
идентификатор: 92
количество: 1
*************************** 2-й ряд ********************** *******
дата: 1878 г.
модуль: файл
тип: узел
идентификатор: 92
количество: 1
2 ряда в наборе (0,000 сек)
# выберите * из file_managed где найти в (1876, 1878)\G
*************************** 1-й ряд ********************** *******
дата: 1876 г.
UUID: 876c1bd1-566c-4d6b-a767-4925d75b593f
код языка: это
ИД: 1
имя файла: первый_файл.pdf
uri: частный://my_content_type/201211/first_file.pdf
filemime: приложение/pdf
Размер файла: 140982
статус: 1
создано: 1651744379
изменено: 1651744379
*************************** 2-й ряд ********************** *******
дата: 1878 г.
UUID: 4c26c169-3e92-4254-af49-e5b203caf4c6
код языка: это
ИД: 1
имя файла: второй_файл.pdf
uri: частный://my_content_type/202205/first_file.pdf
filemime: приложение/pdf
Размер файла: 140982
статус: 1
создано: 1651745721
изменено: 1651745725
2 ряда в наборе (0,000 сек)
Права доступа одинаковы для каталогов и файлов.
Что-то отличается от ручного и программного присоединения.
Забыли что-то установить?
Заранее спасибо.