Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python请求模块向post请求添加表单数据变量?_Python_Post_File Upload_Request - Fatal编程技术网

如何使用python请求模块向post请求添加表单数据变量?

如何使用python请求模块向post请求添加表单数据变量?,python,post,file-upload,request,Python,Post,File Upload,Request,我正在尝试创建一个命令行实用程序,使用Python的请求模块将文件上载到tempsend.com 我已经阅读了文档,看起来我想要完成的应该很容易,但是我无法让它成功地发布文件 以下是我尝试过的一些格式: >>> import requests >>> url = "http://tempsend.com/send" >>> payload = {'file': open('happy.txt', 'rb'), 'expire': '26784

我正在尝试创建一个命令行实用程序,使用Python的
请求
模块将文件上载到tempsend.com

我已经阅读了文档,看起来我想要完成的应该很容易,但是我无法让它成功地发布文件

以下是我尝试过的一些格式:

>>> import requests
>>> url = "http://tempsend.com/send"
>>> payload = {'file': open('happy.txt', 'rb'), 'expire': '2678400'}
>>> r = requests.post(url, data=payload)
>>> r.url
u'http://tempsend.com/error-nopostdata'
以及:

似乎无法识别
'expire'
字段

我认为一个有效的原始请求应该是这样的:

POST /send HTTP/1.1
Host: tempsend.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://tempsend.com/
Cookie: __utma=151760572.1993029721.1402528667.1402603529.1402606574.3;         __utmz=151760572.1402528667.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);     __utmb=151760572.2.10.1402606574; __utmc=151760572
Connection: keep-alive
Content-Type: multipart/form-data;     boundary=---------------------------18953598303296896262036228879
Content-Length: 835112

-----------------------------18953598303296896262036228879
Content-Disposition: form-data; name="file"; filename="modules.alias"
Content-Type: application/octet-stream

# Aliases extracted from modules themselves.
alias aes-asm aes_x86_64
alias aes aes_x86_64
alias camellia-asm camellia_x86_64
<blablablablablablablabla>


-----------------------------18953598303296896262036228879
Content-Disposition: form-data; name="expire"

2678400
-----------------------------18953598303296896262036228879--
POST/send HTTP/1.1
主持人:tempsend.com
用户代理:Mozilla/5.0(X11;Linux x86_64;rv:29.0)Gecko/20100101 Firefox/29.0
接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
接受语言:en-gb,en;q=0.5
接受编码:gzip,deflate
推荐人:http://tempsend.com/
Cookie:uu utma=151760572.1993029721.1402528667.1402603529.1402606574.3__utmz=151760572.1402528667.1.1.utmcsr=(直接)| UTMCN=(直接)| utmcmd=(无)__utmb=151760572.2.10.1402606574__utmc=151760572
连接:保持活力
内容类型:多部分/表单数据;边界=------------------------------------189535983032968962036228879
内容长度:835112
-----------------------------18953598303296896262036228879
内容配置:表单数据;name=“file”;filename=“modules.alias”
内容类型:应用程序/八位字节流
#从模块本身提取的别名。
别名aes asm aes_x86_64
别名aes aes_x86_64
别名camellia asm camellia_x86_64
-----------------------------18953598303296896262036228879
内容配置:表单数据;name=“到期”
2678400
-----------------------------18953598303296896262036228879--
我在问了这个问题5分钟后找到了答案。。典型的

POST /send HTTP/1.1
Host: tempsend.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://tempsend.com/
Cookie: __utma=151760572.1993029721.1402528667.1402603529.1402606574.3;         __utmz=151760572.1402528667.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);     __utmb=151760572.2.10.1402606574; __utmc=151760572
Connection: keep-alive
Content-Type: multipart/form-data;     boundary=---------------------------18953598303296896262036228879
Content-Length: 835112

-----------------------------18953598303296896262036228879
Content-Disposition: form-data; name="file"; filename="modules.alias"
Content-Type: application/octet-stream

# Aliases extracted from modules themselves.
alias aes-asm aes_x86_64
alias aes aes_x86_64
alias camellia-asm camellia_x86_64
<blablablablablablablabla>


-----------------------------18953598303296896262036228879
Content-Disposition: form-data; name="expire"

2678400
-----------------------------18953598303296896262036228879--
>>> import requests
>>> files = {'file': open('happy.txt', 'rb')}
>>> url = "http://tempsend.com/send"
>>> r = requests.post(url, data={'expire':'2678400'}, files=files)
>>> r.url
u'http://tempsend.com/36DCF220A3'
>>>