pub struct Attachment<T> { /* private fields */ }
Available on crate feature
attachment
only.Expand description
A file attachment response.
This type will set the Content-Disposition
header to attachment
. In response a webbrowser
will offer to download the file instead of displaying it directly.
Use the filename
and content_type
methods to set the filename or content-type of the
attachment. If these values are not set they will not be sent.
§Example
use axum::{http::StatusCode, routing::get, Router};
use axum_extra::response::Attachment;
async fn cargo_toml() -> Result<Attachment<String>, (StatusCode, String)> {
let file_contents = tokio::fs::read_to_string("Cargo.toml")
.await
.map_err(|err| (StatusCode::NOT_FOUND, format!("File not found: {err}")))?;
Ok(Attachment::new(file_contents)
.filename("Cargo.toml")
.content_type("text/x-toml"))
}
let app = Router::new().route("/Cargo.toml", get(cargo_toml));
let _: Router = app;
§Note
If you use axum with hyper, hyper will set the Content-Length
if it is known.
Implementations§
Source§impl<T: IntoResponse> Attachment<T>
impl<T: IntoResponse> Attachment<T>
Sourcepub fn new(inner: T) -> Self
pub fn new(inner: T) -> Self
Creates a new Attachment
.
Sourcepub fn filename<H: TryInto<HeaderValue>>(self, value: H) -> Self
pub fn filename<H: TryInto<HeaderValue>>(self, value: H) -> Self
Sets the filename of the Attachment
.
This updates the Content-Disposition
header to add a filename.
Sourcepub fn content_type<H: TryInto<HeaderValue>>(self, value: H) -> Self
pub fn content_type<H: TryInto<HeaderValue>>(self, value: H) -> Self
Sets the content-type of the Attachment
Trait Implementations§
Source§impl<T: Debug> Debug for Attachment<T>
impl<T: Debug> Debug for Attachment<T>
Source§impl<T> IntoResponse for Attachment<T>where
T: IntoResponse,
impl<T> IntoResponse for Attachment<T>where
T: IntoResponse,
Source§fn into_response(self) -> Response
fn into_response(self) -> Response
Create a response.
Auto Trait Implementations§
impl<T> !Freeze for Attachment<T>
impl<T> RefUnwindSafe for Attachment<T>where
T: RefUnwindSafe,
impl<T> Send for Attachment<T>where
T: Send,
impl<T> Sync for Attachment<T>where
T: Sync,
impl<T> Unpin for Attachment<T>where
T: Unpin,
impl<T> UnwindSafe for Attachment<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more