Код: Выделить всё
public function buildConfigurationForm(array $form, FormStateInterface $form_state): array {
$form['firmware_upload'] = [
'#type' => 'file',
'#title' => $this->t('Firmware'),
'#description' => [
'#theme' => 'file_upload_help',
// '#description' => $this->t(''),
'#upload_validators' => $this->uploadValidators(),
],
'#upload_location' => SensdeskDeviceInterface::FIRMWARE_DIRECTORY . '/fw',
'#upload_validators' => $this->uploadValidators(),
'#required' => TRUE,
];
return $form;
}
Код: Выделить всё
public function submitConfigurationForm(array &$form, FormStateInterface $form_state): void {
$file = $form_state->getValue('firmware_upload');
$version = '6.6.6';
$timestamp = date('YmdHis');
$location = $form['firmware_upload']['#upload_location'];
$zipName = "$location/$version-$timestamp.zip";
$file = $this->fileRepository->move($file, $zipName, FileSystemInterface::EXISTS_REPLACE);
$zip = new \ZipArchive();
if ($zip->open($zipName, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE) === TRUE) {
$zip->extractTo($location);
$zip->close();
}
else {
throw new \Exception('Failed to open the ZIP file.');
}
$this->configuration['version'] = $version;
}
Я попробовал приведенный выше код и некоторые его варианты, но не могу понять, почему извлечение zip-файла не работает.
Подробнее здесь: https://stackoverflow.com/questions/786 ... d-zip-file