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);
|
||||
|
||||
/// 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",
|
||||
];
|
||||
|
@ -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!"))
|
||||
}
|
||||
|
Reference in New Issue
Block a user