中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python上傳時包含boundary時的解決方法

發布時間:2020-10-02 03:38:35 來源:腳本之家 閱讀:637 作者:loonslo_ 欄目:開發技術

python上傳時,包含boundary時的處理方式

  img_url = []
  upload_pic_url = "http://admin.mdt.oujingroup.cn/uploader/img"

  headers = {

   'X-Requested-With': 'XMLHttpRequest',
   }

  img_file = open(name, 'rb')
  multipart_encoder = MultipartEncoder(
   fields={
    'file': ('test.jpg', img_file, "image/jpeg"),
   },
   boundary='----WebKitFormBoundaryJ2aGzfsg35YqeT7X'
  )

  headers['Content-Type'] = multipart_encoder.content_type
  # 請求頭必須包含一個特殊的頭信息,類似于Content-Type: multipart/form-data; boundary=${bound}
  try:
   r = requests.post(upload_pic_url, data=multipart_encoder, headers=headers)
   print(name)
   # print(r.text)
   temp = json.loads(r.text)
   t = temp['data']['absolute_path']
   # return t
   print(t)
   return img_url.append(t)
  except HTTPError as e:
   print(e)

補充知識:Python模擬瀏覽器上傳文件腳本(Multipart/form-data格式)

http協議本身的原始方法不支持multipart/form-data請求,這個請求由原始方法演變而來的。

multipart/form-data的基礎方法是post,也就是說是由post方法來組合實現的,與post方法的不同之處:請求頭,請求體。

multipart/form-data的請求頭必須包含一個特殊的頭信息:

Content-Type,且其值也必須規定為multipart/form-data,同時還需要規定一個內容分割符用于分割請求體中的多個post的內容,如文件內容和文本內容自然需要分割開來,不然接收方就無法正常解析和還原這個文件了。具體的頭信息如下:

Content-Type: multipart/form-data; boundary=${bound}

實例:

import os, random, sys, requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
 
url = 'http://127.0.0.1/sendmsg'
argvstr = sys.argv[1:]
argv_dict = {}
for argv in argvstr :
  argv = str(argv).replace("\r\n" , "")
  DICT = eval(argv)
  argv_dict.update(DICT)
 
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0',
  'Referer': url
  }
 
multipart_encoder = MultipartEncoder(
  fields={
    'username': argv_dict['username'],
    'pwd': argv_dict['pwd'],
    'type': 'txt',
    'friendfield': argv_dict['friendfield'],
    'friend': argv_dict['friend'],
    'content': argv_dict['content'],
    'file': (os.path.basename(argv_dict['file']) , open(argv_dict['file'], 'rb'), 'application/octet-stream')
    #file為路徑
    },
    boundary='-----------------------------' + str(random.randint(1e28, 1e29 - 1))
  )
 
headers['Content-Type'] = multipart_encoder.content_type
#請求頭必須包含一個特殊的頭信息,類似于Content-Type: multipart/form-data; boundary=${bound}
 
r = requests.post(url, data=multipart_encoder, headers=headers)
print(r.text)
#注意,不要設置cookies等其他參數,否則會報錯
 
# 例子/usr/local/python36/bin/python3 /opt/lykchat/test_upload.py "{'username':'lykchat','pwd':'123456','type':'img','friendfield':'1','friend':'xxxx','content':'恭喜發財','file':'/root/b.jpg'}"
#等同于curl -F "file=@/root/a" 'http://127.0.0.1/sendmsg?username=lykchat&pwd=123456&type=img&friendfield=1&friend=xxxx&content=恭喜發財'

以上這篇python上傳時包含boundary時的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵阳县| 涪陵区| 奉贤区| 平乡县| 大冶市| 灌南县| 抚松县| 嘉兴市| 前郭尔| 屯门区| 渝中区| 大同市| 易门县| 榆树市| 达孜县| 闽侯县| 稻城县| 卓资县| 滨州市| 万山特区| 鞍山市| 西平县| 庄浪县| 盖州市| 安吉县| 湖州市| 龙口市| 依安县| 南通市| 阜新市| 双鸭山市| 炎陵县| 淅川县| 正阳县| 文成县| 伊金霍洛旗| 绥芬河市| 湾仔区| 田林县| 上杭县| 静海县|