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);
}
}