pub struct ContentDisposition {
    pub disposition: DispositionType,
    pub parameters: Vec<DispositionParam>,
}
Expand description

A Content-Disposition header. It is compatible to be used either as a response header for the main body as (re)defined in RFC6266, or as a header for a multipart body as (re)defined in RFC7587.

In a regular HTTP response, the Content-Disposition response header is a header indicating if the content is expected to be displayed inline in the browser, that is, as a Web page or as part of a Web page, or as an attachment, that is downloaded and saved locally, and also can be used to attach additional metadata, such as the filename to use when saving the response payload locally.

In a multipart/form-data body, the HTTP Content-Disposition general header is a header that can be used on the subpart of a multipart body to give information about the field it applies to. The subpart is delimited by the boundary defined in the Content-Type header. Used on the body itself, Content-Disposition has no effect.

ABNF

content-disposition = "Content-Disposition" ":"
                      disposition-type *( ";" disposition-parm )

disposition-type    = "inline" | "attachment" | disp-ext-type
                      ; case-insensitive

disp-ext-type       = token

disposition-parm    = filename-parm | disp-ext-parm

filename-parm       = "filename" "=" value
                    | "filename*" "=" ext-value

disp-ext-parm       = token "=" value
                    | ext-token "=" ext-value

ext-token           = <the characters in token, followed by "*">

Note: filename* must not be used within multipart/form-data.

Example

use actix_web::http::header::{
    Charset, ContentDisposition, DispositionParam, DispositionType,
    ExtendedValue,
};

let cd1 = ContentDisposition {
    disposition: DispositionType::Attachment,
    parameters: vec![DispositionParam::FilenameExt(ExtendedValue {
        charset: Charset::Iso_8859_1, // The character set for the bytes of the filename
        language_tag: None, // The optional language tag (see `language-tag` crate)
        value: b"\xa9 Copyright 1989.txt".to_vec(), // the actual bytes of the filename
    })],
};
assert!(cd1.is_attachment());
assert!(cd1.get_filename_ext().is_some());

let cd2 = ContentDisposition {
    disposition: DispositionType::FormData,
    parameters: vec![
        DispositionParam::Name(String::from("file")),
        DispositionParam::Filename(String::from("bill.odt")),
    ],
};
assert_eq!(cd2.get_name(), Some("file")); // field name
assert_eq!(cd2.get_filename(), Some("bill.odt"));

WARN

If “filename” parameter is supplied, do not use the file name blindly, check and possibly change to match local file system conventions if applicable, and do not use directory path information that may be present. See RFC2183 .

Fields

disposition: DispositionType

The disposition type

parameters: Vec<DispositionParam>

Disposition parameters

Implementations

Parse a raw Content-Disposition header value.

Returns true if it is Inline.

Returns true if it is Attachment.

Returns true if it is FormData.

Returns true if it is Ext and the disp_type matches.

Return the value of name if exists.

Return the value of filename if exists.

Return the value of filename* if exists.

Return the value of the parameter which the name matches.

Return the value of the extended parameter which the name matches.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.