content disposition

This commit is contained in:
2025-11-02 02:26:40 +01:00
parent b9c95437d2
commit b561f46d2c
6 changed files with 53 additions and 48 deletions
+12
View File
@@ -1113,10 +1113,13 @@ pub async fn get_document_asset(
let mut object_responses = Vec::with_capacity(objects.len());
for object in objects {
let response_disposition = presign_disposition_for_asset(&asset, &object);
let url = storage
.presign_get_object(
&object.s3_key,
Duration::from_secs(PRESIGNED_URL_EXPIRY_SECONDS),
response_disposition.as_deref(),
)
.await
.storage_context("failed to generate asset URL")?;
@@ -1135,6 +1138,14 @@ pub async fn get_document_asset(
Ok(Json(to_asset_detail_response(asset, object_responses)))
}
fn presign_disposition_for_asset(
asset: &DocumentAsset,
object: &DocumentAssetObject,
) -> Option<String> {
let filename = format!("{}-{}", asset.asset_type, object.ordinal);
inline_content_disposition(&filename)
}
#[utoipa::path(
get,
path = "/api/documents/{id}/versions",
@@ -1271,6 +1282,7 @@ pub async fn download_with_token(
.presign_get_object(
&version.s3_key,
Duration::from_secs(PRESIGNED_URL_EXPIRY_SECONDS),
None,
)
.await
.storage_context("failed to generate download URL")?;
+1
View File
@@ -320,6 +320,7 @@ async fn stream_document(
.presign_get_object(
&version.s3_key,
Duration::from_secs(DOWNLOAD_URL_TTL_SECONDS),
None,
)
.await
.storage_context("failed to presign document download")?;