簡體   English   中英

想要發送包含圖像的multipart / form-data和python請求

[英]Want to send a multipart/form-data including images with python requests

我想發送包含圖像與python請求的multipart / form-data。

我已經嘗試過一些方法,但是它不能正常工作,可以給我一些建議嗎?

import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder

print "Hello"

url = "https://api.testdomain.com/api/3.1/listings/"

token = 'my-token'
headers = {
    'authorization': "Bearer " + token,
    'Content-Type': 'multipart/form-data; boundary=mybound',
    'platform': 'ios'
}

multipart_data = MultipartEncoder(
    fields={
            # a file upload field
            'photo_0': ('pic.jpg', open('pic.jpg', 'rb'), 'image/jpeg','image_0.jpg'),
            # plain text fields
            'shipping_sg_other_name': 'atikrahman', 
            'collection_id': '2239',
            'description': 'Test bag descriptions 5',
            'material_type': '',
            'location_latlon': '999.0,999.0',
            'photo_0_hash': '',
            'multi_quantities': 'true',
            'shipping_sg_normal_options': 'false',
            'price': '60',
            'abcpay': 'false',
            'abcpay_sg_choices': 'atikrahman',
            'condition': '2',
            'shipping_sg_other_fee': '3.0',
            'meetup': 'false',
            'shipping_sg_smartpac_options': 'false',
            'is_mobile_verification_listing_flow_enabled': 'true',
            'shipping_sg_other': 'true',
            'title': 'TES bag 5',
            'shipping_sg_other_details': '',
            'detect_phone_number': 'false',
            'brand': '',
            'mailing': 'true',
            'shipping_sg_registered_options': 'false',
           }
    )

response = requests.request("POST", url,data=multipart_data,headers=headers)
print(response.text)

我的HTTP REQUEST看起來像這樣

我想對此HTTP請求發出python請求。 我是python新手,這就是為什么有問題。

POST /api/3.1/listings/ HTTP/1.1
Host: api.testdomain.com
Authorization: Bearer my-token
X-Client-Version: 2.103.0
Accept: */*
Accept-Language: en-CN;q=1.0, zh-Hans-CN;q=0.9
Accept-Encoding: gzip, deflate
platform: ios
Content-Length: 1913
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A404
build-no: 958
Connection: close
Content-Type: multipart/form-data; boundary=mybound
Cookie: __cfduid=dd4186742eb52fc594d39235a3870e1c11552535680

--mybound
Content-Type: image/jpeg
Content-Disposition: form-data; name="photo_0"; filename="image_0.jpg"

[image_source_code]

--mybound
Content-Disposition: form-data; name="shipping_sg_other_name"

atikrahman
--mybound
Content-Disposition: form-data; name="collection_id"

2239
--mybound
Content-Disposition: form-data; name="description"

Test bag descriptions 6
--mybound
Content-Disposition: form-data; name="material_type"


--mybound
Content-Disposition: form-data; name="location_latlon"

999.0,999.0
--mybound
Content-Disposition: form-data; name="photo_0_hash"


--mybound
Content-Disposition: form-data; name="multi_quantities"

true
--mybound
Content-Disposition: form-data; name="shipping_sg_normal_options"

false
--mybound
Content-Disposition: form-data; name="price"

32.0
--mybound
Content-Disposition: form-data; name="abcpay"

false
--mybound
Content-Disposition: form-data; name="abcpay_sg_choices"

Wildfemale 
--mybound
Content-Disposition: form-data; name="condition"

2
--mybound
Content-Disposition: form-data; name="shipping_sg_other_fee"

3.0
--mybound
Content-Disposition: form-data; name="meetup"

false
--mybound
Content-Disposition: form-data; name="shipping_sg_smartpac_options"

false
--mybound
Content-Disposition: form-data; name="is_mobile_verification_listing_flow_enabled"

true
--mybound
Content-Disposition: form-data; name="shipping_sg_other"

true
--mybound
Content-Disposition: form-data; name="title"

Test bag 7
--mybound
Content-Disposition: form-data; name="shipping_sg_other_details"


--mybound
Content-Disposition: form-data; name="detect_phone_number"

false
--mybound
Content-Disposition: form-data; name="brand"


--mybound
Content-Disposition: form-data; name="mailing"

true
--mybound
Content-Disposition: form-data; name="shipping_sg_registered_options"

false
--mybound--

謝謝

您可能不需要太多。

將數據和文件作為參數傳遞。 多部分請求將自動構建。

請參閱文檔

import requests

# ...

data = {
    'shipping_sg_other_name': 'atikrahman',
    # .... 
    'shipping_sg_registered_options': 'false',
}

files = ['/path/to/pic.jpg']

response = requests.post(url, data=data, files=files, headers=headers)
print(response.text)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM