Check if file can be loaded during disk image upload
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@ -30,8 +30,9 @@ pub const ALLOWED_ISO_MIME_TYPES: [&str; 4] = [
|
|||||||
pub const ISO_MAX_SIZE: FileSize = FileSize::from_gb(10);
|
pub const ISO_MAX_SIZE: FileSize = FileSize::from_gb(10);
|
||||||
|
|
||||||
/// Allowed uploaded disk images formats
|
/// 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-qemu-disk",
|
||||||
|
"application/x-raw-disk-image",
|
||||||
"application/gzip",
|
"application/gzip",
|
||||||
"application/octet-stream",
|
"application/octet-stream",
|
||||||
];
|
];
|
||||||
|
@ -55,7 +55,15 @@ pub async fn upload(MultipartForm(mut form): MultipartForm<UploadDiskImageForm>)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy the file to the destination
|
// 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!"))
|
Ok(HttpResponse::Ok().json("Successfully uploaded disk image!"))
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user