From e67980ff3c8b91a4526033140776f9e6c5af1b13 Mon Sep 17 00:00:00 2001 From: weisd Date: Thu, 17 Jul 2025 23:25:21 +0800 Subject: [PATCH] Fix/range content length (#251) * fix:getobject range length --- rustfs/src/storage/ecfs.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rustfs/src/storage/ecfs.rs b/rustfs/src/storage/ecfs.rs index 8be5c2a2..f95bdb09 100644 --- a/rustfs/src/storage/ecfs.rs +++ b/rustfs/src/storage/ecfs.rs @@ -792,11 +792,6 @@ impl S3 for FS { }; let last_modified = info.mod_time.map(Timestamp::from); - let body = Some(StreamingBlob::wrap(bytes_stream( - ReaderStream::with_capacity(reader.stream, DEFAULT_READ_BUFFER_SIZE), - info.size as usize, - ))); - let mut rs = rs; if let Some(part_number) = part_number { @@ -805,20 +800,25 @@ impl S3 for FS { } } - let mut content_length = Some(info.size as i64); + let mut content_length = info.size as i64; let content_range = if let Some(rs) = rs { let total_size = info.get_actual_size().map_err(ApiError::from)?; let (start, length) = rs.get_offset_length(total_size as i64).map_err(ApiError::from)?; - content_length = Some(length); + content_length = length; Some(format!("bytes {}-{}/{}", start, start as i64 + length - 1, total_size)) } else { None }; + let body = Some(StreamingBlob::wrap(bytes_stream( + ReaderStream::with_capacity(reader.stream, DEFAULT_READ_BUFFER_SIZE), + content_length as usize, + ))); + let output = GetObjectOutput { body, - content_length, + content_length: Some(content_length), last_modified, content_type, accept_ranges: Some("bytes".to_string()),