
Build multipart/form-data type-safe in Swift. A result builder DSL is also available.
Installation
Add the following to the dependencies of your Package.swift
:
.package(url: "https://github.com/FelixHerrmann/swift-multipart-formdata.git", from: "x.x.x")
Xcode
Add the package to your project as shown here.
Manual
Download the files in the Sources folder and drag them into you project.
Example
import MultipartFormData
let boundary = try Boundary(uncheckedBoundary: "example-boundary")
let multipartFormData = try MultipartFormData(boundary: boundary) {
Subpart {
ContentDisposition(name: "field1")
} body: {
Data("value1".utf8)
}
try Subpart {
ContentDisposition(name: "field2")
ContentType(mediaType: .applicationJson)
} body: {
try JSONSerialization.data(withJSONObject: ["string": "abcd", "int": 1234], options: .prettyPrinted)
}
let filename = "test.png"
let homeDirectory = FileManager.default.homeDirectoryForCurrentUser
let fileDirectory = homeDirectory.appendingPathComponent("Desktop").appendingPathComponent(filename)
if FileManager.default.fileExists(atPath: fileDirectory.path) {
try Subpart {
try ContentDisposition(uncheckedName: "field3", uncheckedFilename: filename)
ContentType(mediaType: .applicationOctetStream)
} body: {
try Data(contentsOf: fileDirectory)
}
}
}
let url = URL(string: "https://example.com/example")!
let request = URLRequest(url: url, multipartFormData: multipartFormData)
let (data, response) = try await URLSession.shared.data(for: request)
The generated HTTP request
POST https://example.com/example HTTP/1.1
Content-Length: 428
Content-Type: multipart/form-data; boundary="example-boundary"
--example-boundary
Content-Disposition: form-data; name="field1"
value1
--example-boundary
Content-Disposition: form-data; name="field2"
Content-Type: application/json
{
"string" : "abcd",
"int" : 1234
}
--example-boundary
Content-Disposition: form-data; name="field3"; filename="test.png"
Content-Type: application/octet-stream
<<png-data>>
--example-boundary--
Documentation
For a detailed usage description, you can check out the documentation.

License
MultipartFormData is available under the MIT license. See the LICENSE file for more info.
MultipartFormData
Build multipart/form-data type-safe in Swift. A result builder DSL is also available.
Installation
Swift Package Manager
Add the following to the dependencies of your
Package.swift
:Xcode
Add the package to your project as shown here.
Manual
Download the files in the Sources folder and drag them into you project.
Example
The generated HTTP request
Documentation
For a detailed usage description, you can check out the documentation.
License
MultipartFormData is available under the MIT license. See the LICENSE file for more info.