diff --git a/src/handlers/upload.rs b/src/handlers/upload.rs
index c68a97909eac51c924da0c14f5e6a358adeaf4a8..cd55bd2b2c522b7e3d0aa9c52ed636834f54226a 100644
--- a/src/handlers/upload.rs
+++ b/src/handlers/upload.rs
@@ -51,13 +51,15 @@ pub async fn upload(req: &mut Request, res: &mut Response) {
             engine::generate_filename(length, file.name().unwrap_or("file").to_string()).await;
 
         // Get the temporary file
-        let mut mime_file = File::open(file.path()).expect("Error opening file");
-        let mut buffer = vec![0; 2048];
+        let mime_file = File::open(file.path()).expect("Error opening file");
+        let mut buffer = Vec::with_capacity(2048);
 
         // Load up 2048 bytes (There wasn't a decent answer on how much or little I should read)
-        mime_file
-            .read_exact(&mut buffer)
-            .expect("Error reading file");
+        mime_file.take(2048)
+            .read_to_end(&mut buffer).expect("couldn't read mimetype buffer");
+        
+        tracing::trace!("read bytes for mime parsing: {:x?}", buffer);
+
 
         // Guess the mimetype
         let mimetype: &str = &detect_mime_type(&buffer).unwrap_or("text/plain".to_string());