python中实现form-data传输数据和传输多附件的方法

python中实现form-data请求,传多个附件问题
日常工作中遇到了form-data请求方式,记录日常问题解决方式

import json
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder

def post_form_data():
	# url地址,虚拟地址,请更换成真实地址
	form_data_url = 'https://form.data.url.com'

	# 例如,form_data中,我们需要添加一个key-value值,key='data',value值是一个json对象,传参的Content-Type为json
	data = {
		"name":"form-data",
		"code"123456
	}
	
	# 首先把data进行json化
	data_json = json.dumps(data)

	#1、 如果是form-data中传入附加:
	encoder = MultipartEncoder(
         fields={
             'data': ('', data_json, 'application/json'),
             })

    #2、添加data_json参数的同时添加单个附件,以下是单个key添加单个附件,可以添加多个key,每个key对应一个附件:
    encoder = MultipartEncoder(
        fields={
            'data': ('', payload, 'application/json'),
            'files': ('excel文件.xls', open('C:/Users/excel文件.xls', 'rb').read(), 'application/octet-stream'),
        },
    )

    #3、添加data_json参数的同时添加多个附件,这里是form-data中一个files的key添加多个value的附件
    fields = [("data", ('',payload, 'application/json')),
              ("files",('excel数据.xls', open('C:/Users/excel数据.xls', 'rb').read(), 'application/octet-stream')),
              ("files",('文本数据.txt', open('C:/Users/文本数据.txt', 'rb').read(), 'application/octet-stream'))]
    encoder = MultipartEncoder(fields=fields)


    # 设置请求头
    headers = {
        'Content-Type': encoder.content_type
    }

    # 进行请求数据
    res = requests.post(msg_url, headers=headers, data=encoder)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值