Python Requests库实现本上传文件操作


 

一、接口信息

POST http://172.16.11.221:8080/EasyBuy/admin/product?action=addProduct HTTP/1.1
Host: 172.16.11.221:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------172115127626670594683299562332
Content-Length: 1210
Origin: http://172.16.11.221:8080
DNT: 1
Connection: keep-alive
Referer: http://172.16.11.221:8080/EasyBuy/admin/product?action=toAddProduct
Cookie: JSESSIONID=17D011BBCF07CCE19FEF9C0584A6EBAB
Upgrade-Insecure-Requests: 1

提交的multipart/form-data数据:

二、实现方式

2.1.通过data参数和files参数发送请求

import requests

#使用Session方法,持久保持会话
session = requests.Session()

#打开首页请求
session.get("http://172.16.11.221:8080/EasyBuy/Home?action=index")

#用户登录请求
url = "http://172.16.11.221:8080/EasyBuy/Login"
headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'charset': 'UTF-8'
}
payload = {
    'loginName': 'admin',
    'password': '123456',
    'action': 'login'
}
session.post(url, data=payload, headers=headers)


#上传商品信息文件
url = 'http://172.16.11.221:8080/EasyBuy/admin/product?action=addProduct'

#构成字典,键值对方式传参
payload = {
    "categoryLevel1Id":'548',
    "categoryLevel2Id":'654',
    "categoryLevel3Id":'655',
    "id": "",
    "name": '护手霜',
    "price": '123',
    "stock": '100000',
    "description": 'BB护手霜'
}
#上传文件单独构造以一下形式,“photo”上传文件的键名,'hello.jpg'上传到服务器的文件名, open('D:/hello.jpg','rb')打开文件对象注意要使用二进制,'image/jpeg'Content-Type类型
file = {
    'photo': ('hello.jpg', open('D:/hello.jpg','rb'),'image/jpeg')
}
session.post(url, data=payload, files=file)

2.2.仅通过files参数模拟文件发送请求

url = 'http://172.16.11.221:8080/EasyBuy/admin/product?action=addProduct'

# 构造字典,键值对方式传参,类型不是文件的构造键值对,键值为一个元组形式,元组第0位为None,第1位为键值.
file = {
    "categoryLevel1Id": (None, '548'),
    "categoryLevel2Id": (None, '654'),
    "categoryLevel3Id": (None, '655'),
    "id": (None, ""),
    "name": (None, '护手霜'),
    "price": (None, '1279'),
    "stock": (None, '100000'),
    "description": (None, '效果好,各方面比较好'),
    'photo': ('hello.jpg', open('D:/hello.jpg', 'rb'), 'image/jpeg')
}

session.post(url,data=payload, files=file)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM