Điểm:0

Cách đặt giá trị của trường tệp được mã hóa theo chương trình

lá cờ je

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();
lá cờ cn
Trình bao bọc luồng `mã hóa` là _một trình bao bọc lược đồ tự động mã hóa/giải mã_ - vì vậy bạn có thể nhân đôi lợi ích bằng cách tự mã hóa dữ liệu
Елин Й. avatar
lá cờ je
Tôi cũng mong đợi điều tương tự, nhưng nếu tôi sử dụng `$data` thay vì `$encryptedData` như `file_save_data($data, $destination . '/' . $filename)`, tệp sẽ được lưu mà không cần mã hóa và tôi có thể mở nó trên hệ thống tập tin. Tải xuống tệp qua trình bao bọc luồng vẫn không hoạt động.
Елин Й. avatar
lá cờ je
@Clive cảm ơn vì đã chỉ cho tôi hướng đi đúng. Lần đầu tiên tôi tải xuống tệp bằng `httpClient` và sau đó lưu nó bằng `file_save_data`. Điều này bằng cách nào đó đã bỏ qua trình bao bọc lược đồ vì bất kỳ lý do gì. Đó là lý do tại sao tôi đã cố gắng mã hóa thủ công trước khi lưu. Tôi đã thay đổi mã và sử dụng `httpClient` trực tiếp để tải xuống đích và nó hoạt động mà không cần mã hóa thủ công! Tôi sẽ đăng giải pháp chi tiết trong những ngày tiếp theo ngay khi tôi có thời gian.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.