代码之家  ›  专栏  ›  技术社区  ›  sanyassh Khushboo Tahir

aiohttp将文件上传为curl-F

  •  0
  • sanyassh Khushboo Tahir  · 技术社区  · 6 年前

    我有一个curl-F“file=/tmp/test.txt”响应200的请求,但是我不能用Python模拟这个请求。我试过这样的东西

    mp = aiohttp.MultipartWriter()
    mp.append(open('/tmp/test.txt', 'rb'))
    result = await session.post(url, data=mp)
    

    但它不工作,服务器响应400。我也试过

    mp.append_form([('file', open('/tmp/test.txt'))]) 
    

    它也不起作用。用aiohttp模拟curl-F的正确方法是什么?

    P.S.I还尝试使用set_content_disposition()对mp.append()的结果进行设置,但是它没有返回任何结果,而是返回有效负载,如本文中所述 http://docs.aiohttp.org/en/stable/multipart.html#sending-multipart-requests

    1 回复  |  直到 6 年前
        1
  •  0
  •   Yurii Kramarenko    6 年前

    尝试添加标题:

    headers={
        'Content-Length': '{file lendth}'
        'Content-Type': 'multipart/form-data'
    }
    
    /////////////////////////////////////////
    
    mp = aiohttp.MultipartWriter()
    mp.append(open('/tmp/test.txt', 'rb'))
    result = await session.post(url, data=mp, headers=headers)