V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
bestehen
V2EX  ›  问与答

Python 如何 发送 multiipart 上传文件?

  •  
  •   bestehen · 2018-08-23 20:05:02 +08:00 · 1327 次点击
    这是一个创建于 2288 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Content-Disposition: form-data; name="_csrf"

    pvlVVBZkGPROBe1zHHx17fc5VKtVMcLMGS6TKFn82HPFjgMBeCsvnXtf3SksKELVmm4tziJFipMoSPp3Ds2SQA==
    -----------------------------119938005516990736431240663742
    Content-Disposition: form-data; name="ReportForm[url]"


    -----------------------------119938005516990736431240663742
    Content-Disposition: form-data; name="ReportForm[url]"; filename="å¼€å‘çŽ¯å¢ƒå’Œé¢„ä¸Šçº¿çŽ¯å¢ƒçš„ä»£ç åŒæ­¥.pdf"
    Content-Type: application/pdf


    file=os.getcwd()+'/'+"齐家网 COO 毛新勇:《未来平台赋能是必然,但要真刀真枪才有意义》-18 页.pdf"
    files={'ReportForm[url]':open(file,'rb')}
    data={'_csrf':"23ccd68ef09d0241c45e60e893f1a6f6095b4d3a925790a2d384e2bb53c2f657a%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22vuzdYe35uBps-XPOgKBnTqnIg8bvm9yJ%22%3B%7D"}
    response=requests.post(url=url,cookies=cookies,headers=headers,files=files,data=data)
    我这样写综述不对呢
    3 条回复    2018-08-24 15:31:27 +08:00
    lieh222
        1
    lieh222  
       2018-08-24 09:36:35 +08:00
    response.request.body 打印看看呗
    bestehen
        2
    bestehen  
    OP
       2018-08-24 12:46:18 +08:00
    @lieh222 返回的是 none
    我现在是这样写的
    files=[("ReportForm[url]",('齐家网 COO 毛新勇:《未来平台赋能是必然,但要真刀真枪才有意义》-18 页.pdf',open(file,'rb'),'Content-Type: application/pdf'))]
    data={"_csrf":csrf_token}
    headers=headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    }

    response=requests.post(url=url,cookies=cookies,files=files,data=data,headers=headers)
    print(response.request.body)
    bestehen
        3
    bestehen  
    OP
       2018-08-24 15:31:27 +08:00
    网页源码是这样的

    <form id="w0" class="form-horizontal" action="/report/add?_=1535094880131" method="post" enctype="multipart/form-data">
    <input type="hidden" name="_csrf" value="4n_OPKuOaFi3F2pKZZwCPje9xQM4aIwKOZiHWUSoOSGnDqls7uo4HY5aAClc0nVhR_OIMloA-D5L3rYGNMdLVA=="><div class="form-group field-reportform-url">
    <label class="control-label col-sm-3" for="reportform-url">上传报告</label>
    <div class="col-sm-6">
    <input type="hidden" name="ReportForm[url]" value=""><input type="file" id="reportform-url" class="report_pdf_new" name="ReportForm[url]">
    <p class="help-block help-block-error "></p>
    </div>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3146 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:57 · PVG 21:57 · LAX 05:57 · JFK 08:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.