Ich möchte eine Datei hochladen und muss den Formularelementtyp als 'Datei' verwenden. In der Übermittlungsfunktion kann ich keine richtigen Daten zu der Datei abrufen, die ich hochlade. SO Kann mir bitte jemand helfen, dieses Problem zu lösen? Bitte finden Sie den folgenden Code:
public function buildForm(array $form, FormStateInterface $form_state) {
$form['test_CERTIFICATE'] = [
'#type' => 'file',
'#title' => $this->t('Certificate'),
'#description' => $this->t('Your Certificate (.pem file)').': '.\Drupal::state()->get('test_CERTIFICATE_NAME'),
];
return parent::buildForm($form, $form_state);
}
Übermittlungsfunktion:
public function submitForm(array &$form, FormStateInterface $form_state) {
parent::submitForm($form, $form_state);
$validators = array('file_validate_extensions' => array('pem'));
$files = file_save_upload('test_CERTIFICATE', $validators, 'public://certfiles', FILE_EXISTS_REPLACE);
$file = File::load($files[0]);
if($file) {
kint($files); exit;
//here control is not coming
$file->setPermanent();
$file->save();
}
}
Sie können mit dem folgenden Code (aus D8.5 core / modules / config / src / Form / ConfigImportForm.php) auf über das Feld "Datei" hochgeladene Dateidaten zugreifen.
quelle
'#type' => 'file'
dies verwenden, ist dies der Weg, um die Datei zu erhalten.$file_name = $file->getClientOriginalName()
, speichern Sie die Datei über am endgültigen Speicherortfile_unmanaged_copy($file_path, "PATH/$file_name");
.