HTTP.FormData (http_fetch v0.5.0)
Handles HTTP form data and multipart/form-data encoding for file uploads. Supports both regular form data and multipart uploads with streaming file support.
Summary
Functions
Adds a form field.
Adds a file field for upload with streaming support.
Generates a random boundary for multipart/form-data.
Gets the appropriate Content-Type header for the form data.
Creates a new empty FormData struct.
Converts FormData to HTTP body content with appropriate encoding.
Types
Functions
Adds a form field.
Examples
iex> HTTP.FormData.new() |> HTTP.FormData.append_field("name", "value")
%HTTP.FormData{parts: [{:field, "name", "value"}], boundary: nil}
Adds a file field for upload with streaming support.
Examples
iex> file_stream = File.stream!("test.txt")
iex> HTTP.FormData.new() |> HTTP.FormData.append_file("upload", "test.txt", file_stream)
%HTTP.FormData{parts: [{:file, "upload", "test.txt", "text/plain", %File.Stream{}}], boundary: nil}
@spec generate_boundary() :: String.t()
Generates a random boundary for multipart/form-data.
Gets the appropriate Content-Type header for the form data.
@spec new() :: t()
Creates a new empty FormData struct.
Examples
iex> HTTP.FormData.new()
%HTTP.FormData{parts: [], boundary: nil}
Converts FormData to HTTP body content with appropriate encoding.
Returns {:url_encoded, body} for regular forms or {:multipart, body, boundary} for multipart.