Check if file can be loaded during disk image upload
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-06-07 11:28:39 +02:00
parent 1fe7c60f36
commit 9609cfb33a
2 changed files with 11 additions and 2 deletions

View File

@ -30,8 +30,9 @@ pub const ALLOWED_ISO_MIME_TYPES: [&str; 4] = [
pub const ISO_MAX_SIZE: FileSize = FileSize::from_gb(10);
/// Allowed uploaded disk images formats
pub const ALLOWED_DISK_IMAGES_MIME_TYPES: [&str; 3] = [
pub const ALLOWED_DISK_IMAGES_MIME_TYPES: [&str; 4] = [
"application/x-qemu-disk",
"application/x-raw-disk-image",
"application/gzip",
"application/octet-stream",
];

View File

@ -55,7 +55,15 @@ pub async fn upload(MultipartForm(mut form): MultipartForm<UploadDiskImageForm>)
}
// Copy the file to the destination
file.file.persist(dest_path)?;
file.file.persist(&dest_path)?;
// Check if file information can be loaded
if let Err(e) = DiskFileInfo::load_file(&dest_path) {
log::error!("Failed to get information about uploaded disk file! {e}");
std::fs::remove_file(&dest_path)?;
return Ok(HttpResponse::InternalServerError()
.json(format!("Unable to process uploaded file! {e}")));
}
Ok(HttpResponse::Ok().json("Successfully uploaded disk image!"))
}