@@ -3,7 +3,7 @@ use crate::{
33 models:: { ErrorResponse , UploadResponse } ,
44} ;
55use axum:: {
6- extract:: { Multipart , State } ,
6+ extract:: Multipart ,
77 http:: StatusCode ,
88 Json ,
99} ;
@@ -159,16 +159,26 @@ pub async fn upload_image(
159159
160160 let mut total_size = first_chunk. len ( ) ;
161161
162- while let Some ( chunk) = field. chunk ( ) . await . map_err ( |err| {
163- tracing:: error!( "Failed to read chunk: {}" , err) ;
164- let _ = tokio:: fs:: remove_file ( & filepath) . await ;
165- (
166- StatusCode :: INTERNAL_SERVER_ERROR ,
167- Json ( ErrorResponse {
168- error : format ! ( "Failed to read file: {}" , err) ,
169- } ) ,
170- )
171- } ) ? {
162+ loop {
163+ let chunk_option = match field. chunk ( ) . await {
164+ Ok ( opt) => opt,
165+ Err ( err) => {
166+ tracing:: error!( "Failed to read chunk: {}" , err) ;
167+ let _ = tokio:: fs:: remove_file ( & filepath) . await ;
168+ return Err ( (
169+ StatusCode :: INTERNAL_SERVER_ERROR ,
170+ Json ( ErrorResponse {
171+ error : format ! ( "Failed to read file: {}" , err) ,
172+ } ) ,
173+ ) ) ;
174+ }
175+ } ;
176+
177+ let chunk = match chunk_option {
178+ Some ( c) => c,
179+ None => break ,
180+ } ;
181+
172182 total_size += chunk. len ( ) ;
173183 if total_size > MAX_FILE_SIZE {
174184 let _ = tokio:: fs:: remove_file ( & filepath) . await ;
0 commit comments