Saya ingin mengunggah file dan saya harus menggunakan tipe elemen formulir sebagai 'file'. Dalam fungsi kirim, saya tidak bisa mendapatkan data yang benar terkait dengan file yang saya unggah. SO Adakah yang bisa membantu saya untuk menyelesaikan ini. Silakan temukan kode di bawah ini:
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);
}
Kirim fungsi:
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();
}
}
Jawaban:
Saya memiliki masalah yang sama dengan
file
elemen form. Selesaikan ini dengan menggunakanmanaged_file
dan menyediakan lokasi unggah dan validator dalam elemen formulir:Kemudian di ajukan:
sumber
Anda dapat mengakses data file yang diunggah melalui bidang "file" menggunakan kode berikut (dari D8.5 core / modules / config / src / Form / ConfigImportForm.php)
sumber
'#type' => 'file'
ini adalah cara untuk mendapatkan file.$file_name = $file->getClientOriginalName()
, dan kemudian simpan file ke lokasi akhir viafile_unmanaged_copy($file_path, "PATH/$file_name");
.