The MIME::Multipart
module contains utilities for parsing MIME multipart messages, which contain multiple body parts, each containing a header section and binary body. The multipart/form-data
content-type has a separate set of utilities in the HTTP::FormData
module.
Yields a Multipart::Builder
to the given block, writing to io and using boundary.
Yields a Multipart::Builder
to the given block, returning the generated message as a String
.
Returns a unique string suitable for use as a multipart boundary.
Parses a MIME multipart message, yielding HTTP::Headers
and an IO
for each body part.
Parses a MIME multipart message, yielding HTTP::Headers
and an IO
for each body part.
Extracts the multipart boundary from the Content-Type header.
Yields a Multipart::Builder
to the given block, writing to io and using boundary. #finish
is automatically called on the builder.
Yields a Multipart::Builder
to the given block, returning the generated message as a String
.
Returns a unique string suitable for use as a multipart boundary.
require "mime/multipart" MIME::Multipart.generate_boundary # => "---------------------------dQu6bXHYb4m5zrRC3xPTGwV"
Parses a MIME multipart message, yielding HTTP::Headers
and an IO
for each body part.
Please note that the IO object yielded to the block is only valid while the block is executing. The IO is closed as soon as the supplied block returns.
require "mime/multipart" multipart = "--aA40\r\nContent-Type: text/plain\r\n\r\nbody\r\n--aA40--" MIME::Multipart.parse(IO::Memory.new(multipart), "aA40") do |headers, io| headers["Content-Type"] # => "text/plain" io.gets_to_end # => "body" end
See: Multipart::Parser
Parses a MIME multipart message, yielding HTTP::Headers
and an IO
for each body part.
Please note that the IO object yielded to the block is only valid while the block is executing. The IO is closed as soon as the supplied block returns.
require "http" require "mime/multipart" headers = HTTP::Headers{"Content-Type" => "multipart/mixed; boundary=aA40"} body = "--aA40\r\nContent-Type: text/plain\r\n\r\nbody\r\n--aA40--" request = HTTP::Request.new("POST", "/", headers, body) MIME::Multipart.parse(request) do |headers, io| headers["Content-Type"] # => "text/plain" io.gets_to_end # => "body" end
See: Multipart::Parser
Extracts the multipart boundary from the Content-Type header. May return nil
is the boundary was not found.
require "mime/multipart" MIME::Multipart.parse_boundary("multipart/mixed; boundary=\"abcde\"") # => "abcde"
© 2012–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.35.1/MIME/Multipart.html