日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python Request POST 上传文件 Multipart/form-data

發布時間:2023/12/8 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Request POST 上传文件 Multipart/form-data 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目場景:

我的第一個博客:使用python request模塊向服務器接口上傳圖片

問題描述

某app上傳圖片接口的包

原因分析:

問題的關鍵詞:請求頭 Content-Type:multipart/form-data
1、常用的情況下提交數據,都是通過request.post以表單的形式向服務器提交數據的,但是根據抓包攜帶的請求頭信息這個格式不是鍵值對的形式
2、根據關鍵詞搜索了解到該請求格式為RFC1867協議,不是以表單方式提交
3、這里提一下,上傳文件常用的都是將需要上傳的文件以二進制形式讀入內存,有些時候根據不同的場景會將文件二進制內容進行加密,再把內容跟隨一些參數一起提交至服務器中,


解決方案:

1、關于RFC1867協議的概念介紹鏈接:RFC1867協議說明
2、關于app文件上傳接口請求體格式的介紹說明請參考這個鏈接:Multipart/form-data POST文件上傳詳解
3、繼續推薦:request文件上傳
4、關于使用request上傳文件我推薦兩種方式參考鏈接:兩種方式
5、補充:我是用第二種方式上傳成功的,對于第二種方式寫個注意事項
需要引用模塊:requests_toolbelt
安裝:pip install requests_toolbelt -i https://pypi.tuna.tsinghua.edu.cn/simple

import base64 from requests import session from requests_toolbelt import MultipartEncoder sessions = session() with open(file=file_path, mode='rb') as fis:file_content = fis # base64.b64encode().decode() 有些需要編碼files = {'filename': filename,'Content-Disposition': 'form-data;','Content-Type': 'image/jpeg','file': (filename, file_content, 'image/jpeg') }form_data = MultipartEncoder(files) # 格式轉換sessions.headers['Content-Type'] = form_data.content_typeresponse = sessions.post(url=upload_img_url, data=form_data)

注釋:需要注意上傳文件接口的參數,name的值,filename,Content-Type,格式: file={ ‘name的值’: (“filename”, “文件對象”, ‘內容類型’), … }
最后在分享一個web開發的技術網站,詳細的介紹了請求頭的各種參數:web開發技術網站
手機app抓包工具推薦:小黃鳥(HTTPCanary)

總結

以上是生活随笔為你收集整理的Python Request POST 上传文件 Multipart/form-data的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。