Tôi có tập lệnh tùy chỉnh nhập nội dung từ cơ sở dữ liệu bên ngoài.
Tôi đang đính kèm tệp bằng mã tùy chỉnh bên dưới.
$file = File::create([
'tên_tệp' => $new_filename,
'uri' => $folder_uri . '/' . $new_filename,// private://my_content_type/<subdir>/filename.pdf
]);
$file->setPermanent();
$file->save();
Khi phần trên hoàn tất, hãy đính kèm (các) tệp đó vào nút mới bằng cách sử dụng mã tùy chỉnh bên dưới.
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$dữ liệu = [
'type' => 'my_content_type',
'tiêu đề' => 'Tiêu đề',
'trạng thái' => 1,
...
'field_attach' => [' target_id' => $file->fid->value],
...
];
$node = $storage_handler->create($data);
$node->save();
Khi tôi chỉnh sửa cùng một nút, tôi thấy đúng tệp được đính kèm nhưng khi mở nó ở chế độ xem trước, tôi nhận được "Quyền truy cập bị từ chối", ngay cả khi tôi đã đăng nhập với tư cách quản trị viên.
Mặc dù, lĩnh vực trường_đính kèm
là nhiều tệp và nếu tôi đính kèm thủ công một tệp khác từ trang chỉnh sửa và lưu tệp đó, thì tôi có thể xem trước tệp đó một cách chính xác.
gỡ lỗi:
Đây là phần phát triển cho nút:
[field_attach] => Mảng
(
[x-default] => Mảng
(
[0] => Mảng
(
[target_id] => 1876 // Không thể xem trước, truy cập bị từ chối
[hiển thị] => 1
[mô tả] =>
)
[1] => Mảng
(
[ target_id ] => 1878 // Có thể xem trước
[hiển thị] => 1
[mô tả] =>
)
)
)
Trong cơ sở dữ liệu, mỗi tệp có cùng giá trị:
# select * from file_usage where fid in(1876, 1878)\G
*************************** 1. hàng ********************* *******
năm: 1876
mô-đun: tập tin
loại: nút
mã số: 92
đếm: 1
*************************** 2. hàng ********************* *******
năm: 1878
mô-đun: tập tin
loại: nút
mã số: 92
đếm: 1
2 hàng trong bộ (0,000 giây)
# select * from file_managed where fid in(1876, 1878)\G
*************************** 1. hàng ********************* *******
năm: 1876
uuid: 876c1bd1-566c-4d6b-a767-4925d75b593f
mã ngôn ngữ: nó
uid: 1
tên tệp: first_file.pdf
uri: private://my_content_type/201211/first_file.pdf
phim hoạt hình: ứng dụng/pdf
kích thước tệp: 140982
trạng thái: 1
tạo: 1651744379
đã thay đổi: 1651744379
*************************** 2. hàng ********************* *******
năm: 1878
uuid: 4c26c169-3e92-4254-af49-e5b203caf4c6
mã ngôn ngữ: nó
uid: 1
tên tệp: second_file.pdf
uri: private://my_content_type/202205/first_file.pdf
phim hoạt hình: ứng dụng/pdf
kích thước tệp: 140982
trạng thái: 1
tạo: 1651745721
đã thay đổi: 1651745725
2 hàng trong bộ (0,000 giây)
Quyền đối với thư mục và tệp là như nhau.
Một cái gì đó khác với đính kèm thủ công và lập trình.
Mất để thiết lập một cái gì đó?
Cảm ơn trước.