Tôi đang cố đặt giá trị của trường tệp được mã hóa theo chương trình. Tôi đang sử dụng Tệp được mã hóa mô-đun. Tôi đã định cấu hình thành công trường tệp và trường này hoạt động đối với nội dung được tạo bằng biểu mẫu thêm nút.
Trong một mã tùy chỉnh, tôi nhận được một tệp bằng cách sử dụng HttpClient
và muốn đính kèm vào một phương tiện truyền thông.
Tôi có thể lấy tệp, mã hóa và lưu nó. Tuy nhiên, nếu tôi muốn mở tệp thì nó bị hỏng.
Những gì tôi đang làm là như sau:
$client = Drupal::httpClient();
// Nhận dữ liệu từ trang từ xa và mã hóa bằng cấu hình mã hóa
$data = (chuỗi) $client->get('https://example.com/download.php?file=123')
->getBody();
$encryptionProfile = Drupal::entityTypeManager()
->getStorage('encryption_profile')
->load('my_encryption_profile');
$encryptedData = Drupal::service('mã hóa')
-> mã hóa($data, $encryptionProfile);
// Tạo thực thể phương tiện và chuẩn bị thư mục đích
$media = Drupal::entityTypeManager()->getStorage('media')
->tạo(['gói' => 'my_media_type']);
$destination = 'mã hóa://my_encryption_profile/path/to/files'
Drupal::service('file_system')
->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY);
// Lưu dữ liệu dưới dạng tệp và đính kèm vào phương tiện
$filename = 'download.pdf';
$file = file_save_data($encryptedData, $destination . '/' . $filename);
$media->set('encrypted_file', ['target_id' => $file->id()]);
$media->save();