Файл ещё не выбран.
+ Файл ещё не выбран. В этом разделе разрешены только установочные образы .iso.
Подготовка…
@@ -50,7 +50,7 @@
-
Файл попадёт в /var/lib/virtuality/iso, после загрузки будет выполнен refresh pool virtuality-iso.
+
Файл попадёт в /var/lib/virtuality/iso. Для готовых системных дисков используй раздел Диски: .img / .raw / .qcow2.
@@ -89,7 +89,7 @@ ls -lh /var/lib/virtuality/iso
{% else %}
- | ISO пока нет. Загрузи первый образ через форму выше. |
+ | ISO пока нет. Загрузи первый установочный .iso через форму выше. |
{% endfor %}
@@ -117,15 +117,31 @@ ls -lh /var/lib/virtuality/iso
return value.toFixed(value >= 10 || i === 0 ? 0 : 1) + ' ' + units[i];
}
+ function validIsoFile(file) {
+ return file && file.name && file.name.toLowerCase().endsWith('.iso');
+ }
+
fileInput.addEventListener('change', function () {
const file = fileInput.files[0];
- hint.textContent = file ? file.name + ' · ' + bytesText(file.size) : 'Файл ещё не выбран.';
+ if (!file) {
+ hint.textContent = 'Файл ещё не выбран. В этом разделе разрешены только установочные образы .iso.';
+ return;
+ }
+ if (!validIsoFile(file)) {
+ hint.textContent = 'Неверный тип файла. Здесь можно выбрать только .iso.';
+ fileInput.value = '';
+ return;
+ }
+ hint.textContent = file.name + ' · ' + bytesText(file.size);
});
form.addEventListener('submit', function (event) {
event.preventDefault();
const file = fileInput.files[0];
- if (!file) return;
+ if (!validIsoFile(file)) {
+ hint.textContent = 'Выбери установочный образ .iso.';
+ return;
+ }
const xhr = new XMLHttpRequest();
const data = new FormData(form);