Skip to main content

Form

Struct Form 

Source
pub struct Form { /* private fields */ }
Expand description

A builder for a multipart/form-data request body.

Add fields via Part, then obtain the Content-Type header value with Form::content_type and the body stream with [Form::into_stream].

§Examples

use http::Request;
use http_multipart::{Form, Part};

// construct a form from parts
let parts = vec![
    Part::text("username", "alice"),
    Part::binary("data", &b"hello"[..]).file_name("hello.bin"),
];
let form = Form::new(parts);

// build a request with the form
let req = Request::builder()
    .method("POST") // multipart is usually used with POST method
    .header("Content-Type", form.content_type()) // content type header must be set to form's content type
    .body(form) // form implements Stream, so it can be used directly as the body
    .unwrap();

Implementations§

Source§

impl Form

Source

pub fn new(parts: Vec<Part>) -> Self

Create a new form with an automatically generated boundary.

Source

pub fn with_boundary( boundary: impl AsRef<[u8]>, parts: Vec<Part>, ) -> Result<Self, MultipartError>

Create a form with a caller-supplied boundary.

Returns MultipartError::Boundary if boundary is empty or contains \r / \n (which would break the wire format).

Source

pub fn boundary(&self) -> &[u8]

The raw boundary bytes used by this form.

Source

pub fn content_type(&self) -> HeaderValue

The Content-Type header value that must be set on the outgoing request.

Example: multipart/form-data; boundary=0000000000001a2b

Trait Implementations§

Source§

impl Stream for Form

Source§

type Item = Result<Bytes, Error>

Values yielded by the stream.
Source§

fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
Source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations§

§

impl Freeze for Form

§

impl !RefUnwindSafe for Form

§

impl Send for Form

§

impl !Sync for Form

§

impl Unpin for Form

§

impl UnsafeUnpin for Form

§

impl !UnwindSafe for Form

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<S, T, E> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

Source§

type Ok = T

The type of successful values yielded by this future
Source§

type Error = E

The type of failures yielded by this future
Source§

fn try_poll_next( self: Pin<&mut S>, cx: &mut Context<'_>, ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

Poll this TryStream as if it were a Stream. Read more