Điểm:0

Sử dụng FileSystemInterface::EXISTS_REPLACE trong biểu mẫu để thay thế tệp nếu chúng đã tồn tại

lá cờ cn

Tôi có một biểu mẫu được thiết lập trong menu quản trị cho phép một người tải lên tệp, chẳng hạn như ảnh. Tệp đó sau đó được sử dụng trong mô-đun tùy chỉnh ở nơi khác. Tôi muốn có thể thay thế tệp đó nếu họ tải tệp đó lên lại. Tôi tin rằng tôi có thể sử dụng FileSystemInterface::EXISTS_REPLACE trong biểu mẫu để thực hiện việc này, nhưng tôi không thể tìm thấy tài liệu về cách thực hiện chính xác. Có bất kỳ ví dụ về điều này đang được thực hiện? Vui lòng cho tôi biết nếu bạn muốn xem biểu mẫu hoặc bất kỳ mã nào khác, nhưng tôi không nghĩ điều đó là cần thiết. Cảm ơn!

Chỉnh sửa, tôi đã xem một số tài liệu từ năm ngoái nói rằng không thể thay thế các tệp đã tải lên bằng các tệp cùng tên. Tôi tự hỏi liệu điều này có còn đúng kể từ tháng 4 năm 2022 hay không.

Đây là nơi hình ảnh được tải lên ở dạng:

 $form['upload']['sound_dir'] = [
  '#type' => 'tệp được quản lý',
  '#upload_location' => 'công khai://',
  '#required' => SAI,
  '#multiple' => SAI,
  '#description' => t('Tiện ích mở rộng được phép: mp3 wav'),
  '#upload_validators' => [
    'file_validate_extensions' => mảng('mp3 wav'),
    'file_validate_size' => mảng (25600000)
  ],
  '#title' => t('Tải tập tin âm thanh lên:')
  ];

Và trình:

  hàm công khai submitForm(mảng &$form, FormStateInterface $form_state) {
    $file_data = $form_state->getValue(['upload' => 'sound_dir']);
    nếu ($file_data != null) {
      $file = \Drupal\file\Entity\File::load( $file_data[0], );
      $file_name = $file->getFilename();
      $uri = $file->getFileUri();
      $url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
      $file->setPermanent();
      $file->save();

      $this->configFactory->getEditable(static::SETTINGS)
      ->set('pathToSound', $url)
      -> lưu();
      cha mẹ::submitForm($form, $form_state);
    }
  }
No Sssweat avatar
lá cờ ua
Đây là một ví dụ về bản vá D9 https://www.drupal.org/files/issues/2020-02-21/deprecated_code-3115151-3.patch

Đă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.