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());