用python http上传文件

用python http上传文件,python,file-upload,urllib2,Python,File Upload,Urllib2,我需要连接到api以上载单个文件(无块使用)。所有数据都必须作为POST HTTP数据发送。。。。作为回应,我得到了一个上传文件的链接。api说fn值是filedata?文件名?我认为处理文件有问题,因为它会给我一个错误:urllib2.HTTPError:HTTP error 415:Unsupported Media Type import urllib2 import urllib query_args = {'username':'admin','password':'123456',

我需要连接到api以上载单个文件(无块使用)。所有数据都必须作为POST HTTP数据发送。。。。作为回应,我得到了一个上传文件的链接。api说fn值是filedata?文件名?我认为处理文件有问题,因为它会给我一个错误:
urllib2.HTTPError:HTTP error 415:Unsupported Media Type

import urllib2
import urllib

query_args = {'username':'admin','password':'123456','upload_session':'ABCDEFGH','chunk_no':'1','chunk_number':'1','finalize':'1','filesize':'104857600','fn':open('test.rar', 'rb')}
url = "http://bla.com/upload.php"
data = urllib.urlencode(query_args)
request = urllib2.request(url, data)
response = urllib2.urlopen(request).read()

query\u args['fn']
包含一个文件指针,而不是文件的内容,您需要实际读取文件。您可能想使用
open('test.rar','rb').read()

您还将固定文件大小设置为
104857600
;您可能希望通过
os.stat
获得此信息,即
os.stat(文件名).st\u size

HTTP错误代码415表示:

请求实体的媒体类型为 服务器或资源不支持。例如,客户端 以image/svg+xml的形式上载图像,但服务器需要该图像 使用不同的格式

您确定支持
.rar
文件吗?您可以尝试添加MIME类型:
内容类型:application/x-rar-compressed


我不能确定这是否解决了您的问题,因为您没有提供足够的详细信息来重现它。

如果是python,为什么需要php标记这个api是php,但是我的脚本应该是pythonJust,为了测试我修复了查询参数。。。在将fn更改为open('test.rar','rb')后,仍然存在我得到的错误urllib2.HTTPError:HTTP错误415:不支持的媒体类型。read()@armin884尝试添加MIMEtype&确保支持rar文件。