iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python如何通过http上传文件
  • 357
分享到

python如何通过http上传文件

2023-06-20 13:06:36 357人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python如何通过Http上传文件”,在日常操作中,相信很多人在Python如何通过http上传文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何通过http上传文件”的疑

这篇文章主要介绍“python如何通过Http上传文件”,在日常操作中,相信很多人在Python如何通过http上传文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何通过http上传文件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1 思路

一般情况下,如果我们往一个地址上传文件,则必须要登陆,登陆成功后,拿到cookies,然后在上传文件的请求携带这个cookies。

然后我们就需要通过浏览器在网站上传文件,这个时候我们需要打开浏览器的开发工具或者fiddler,然后按照抓到包组装我们的上传文件的post请求

大家把握一个原则就是:在post请求中,用files参数来接受文件对象相关的参数,通过data/json参数接受post请求体的其他参数即可。

2 实现

1 登陆网站

使用requests.session()对象登陆网站,这里主要为了方便,下次直接用这个对象发送post上传文件的请求即可,不需要我们在请求体中添加cookies

查找登录的URL

python如何通过http上传文件

查找请求头

python如何通过http上传文件

查找登录参数

python如何通过http上传文件

代码如下: 

import requests s = requests.session() res1 = s.post(    url="http://127.0.0.1:5000/login",    headers={        'Host': '127.0.0.1:5000',        'Connection': 'keep-alive',        'Content-Length': '28',        'Cache-Control': 'max-age=0',        'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',        'sec-ch-ua-mobile': '?0',        'Upgrade-Insecure-Requests': '1',        'Origin': 'http://127.0.0.1:5000',        'Content-Type': 'application/x-www-fORM-urlencoded',        'User-Agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/90.0.4430.93 Safari/537.36',        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,**;q=0.8,application/signed-exchange;v=b3;q=0.9',        'Sec-Fetch-Site': 'same-origin',        'Sec-Fetch-Mode': 'navigate',        'Sec-Fetch-User': '?1',        'Sec-Fetch-Dest': 'document',        'Referer': 'http://127.0.0.1:5000/login',        'Accept-Encoding': 'gzip, deflate, br',        'Accept-Language': 'zh-CN,zh;q=0.9'    },    files={        "filename_list": open("./test", "rb"),        "Content-Type": "text/plain",        "Content-Disposition": "form-data",        "filename": "test"    },     data={        "cid": "7"    })

3 三个关键点

1 data参数

注意看k值和抓包中的对比

python如何通过http上传文件

python如何通过http上传文件

2 files参数

这里很关键,这里就是我们上传的文件对象了。filename_list 这个参数就代表文件文件对象,filename 这个值一般就是上传后的文件的名称(可以不写)

python如何通过http上传文件

python如何通过http上传文件

3 content-type参数

如果我们通过form-data的方式上传文件,我们组装post请求的时候,headers这个参数中一定不能要包括这个值,由requests库帮添加这个元素

如果我们自作聪明,会导致上传失败的,这里非常重要!!!

大家可以看到,我在代码中没有传递content-type这个参数,但是抓包是有这个参数的,所以这个参数我们一定不能加

python如何通过http上传文件

 实际抓包有这个参数

python如何通过http上传文件

实际上传抓包验证即可,和浏览器上传略有不同,但是不影响上传 

到此,关于“python如何通过http上传文件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: python如何通过http上传文件

本文链接: https://www.lsjlt.com/news/297227.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作