ฉันกำลังพยายามตั้งค่าฟิลด์ไฟล์ที่เข้ารหัสโดยทางโปรแกรม ฉันกำลังใช้ ไฟล์ที่เข้ารหัส โมดูล. ฉันกำหนดค่าฟิลด์ไฟล์สำเร็จแล้ว และใช้ได้กับเนื้อหาที่สร้างโดยใช้แบบฟอร์มเพิ่มโหนด
ในรหัสที่กำหนดเอง ฉันได้รับไฟล์โดยใช้ไฟล์ Httpไคลเอนต์
และต้องการแนบไปกับสื่อ
ฉันสามารถรับไฟล์ เข้ารหัส และบันทึกได้ อย่างไรก็ตาม ถ้าฉันต้องการเปิดไฟล์ มันใช้งานไม่ได้
สิ่งที่ฉันกำลังทำมีดังนี้:
$client = Drupal::httpClient();
// รับข้อมูลจากรีโมตเพจและเข้ารหัสโดยใช้โปรไฟล์การเข้ารหัส
$data = (string) $client->get('https://example.com/download.php?file=123')
->getBody();
$encryptionProfile = Drupal::entityTypeManager()
->getStorage('encryption_profile')
->โหลด ('my_encryption_profile');
$encryptedData = Drupal::service('การเข้ารหัส')
->เข้ารหัส($data, $encryptionProfile);
// สร้างเอนทิตีสื่อและเตรียมไดเร็กทอรีปลายทาง
$media = Drupal::entityTypeManager()->getStorage('สื่อ')
->create(['bundle' => 'my_media_type']);
$destination = 'เข้ารหัส://my_encryption_profile/path/to/files'
Drupal::service('ไฟล์_ระบบ')
->prepareDirectory(ปลายทาง$, FileSystemInterface::CREATE_DIRECTORY);
// บันทึกข้อมูลเป็นไฟล์และแนบกับสื่อ
$filename = 'ดาวน์โหลด.pdf';
$file = file_save_data($encryptedData, $ปลายทาง . '/' . $filename);
$media->set('encrypted_file', ['target_id' => $file->id()]);
$media->save();