Sample code for 30+ languages & platforms
Chilkat2-Python

multipart/form-data HTTP POST

Demonstrates how to construct and send a multipart/form-data HTTP POST.

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# Sends the following multipart/form-data POST:

# POST /xyz/something HTTP/1.1
# Host: domain
# Content-Type: multipart/form-data; boundary=------------090708030009010000030901
# Content-Length: 2220
# 
# --------------090708030009010000030901
# Content-Disposition: form-data; name="param1"
# 
# value1
# --------------090708030009010000030901
# Content-Disposition: form-data; name="param2"
# 
# value2
# --------------090708030009010000030901
# Content-Disposition: form-data; name="starfish20"; filename="starfish20.jpg"
# Content-Type: image/jpeg
# 
# JPEG DATA HERE...
# --------------090708030009010000030901
# Content-Disposition: form-data; name="helloWorld"; filename="helloWorld.pdf"
# Content-Type: application/pdf
# 
# PDF DATA HERE...
# --------------090708030009010000030901
# Content-Disposition: form-data; name="tinyA"; filename="tinyA.xml"
# Content-Type: text/xml
# 
# XML DATA HERE...
# --------------090708030009010000030901--
# 

req = chilkat2.HttpRequest()
req.HttpVerb = "POST"
req.ContentType = "multipart/form-data"
req.Path = "/xyz/something"

req.AddParam("param1","value1")
req.AddParam("param2","value2")

# Add some small files to the request. (Small so we can see what the full request looks like without too much data..)
bd = chilkat2.BinData()
success = bd.LoadFile("qa_data/jpg/starfish20.jpg")
req.AddBdForUpload("starfish20","starfish20.jpg",bd,"image/jpeg")

success = bd.LoadFile("qa_data/pdf/helloWorld.pdf")
req.AddBdForUpload("helloWorld","helloWorld.pdf",bd,"application/pdf")

success = bd.LoadFile("qa_data/xml/tinyA.xml")
req.AddBdForUpload("tinyA","tinyA.xml",bd,"text/xml")

http = chilkat2.Http()

resp = chilkat2.HttpResponse()
success = http.HttpSReq("example.com",443,True,req,resp)
if (success == False):
    print(http.LastErrorText)
    sys.exit()

print("HTTP response status: " + str(resp.StatusCode))

print("Received:")
print(resp.BodyStr)