使用python http上传文件

时间:2014-11-01 21:29:34

标签: python file-upload urllib2

我需要连接到api才能上传单个文件(无块使用)。所有数据都必须作为POST-HTTP-data发送....作为响应,我获得了与上传文件的链接。 api说fn值是filedata?文件名?我认为handeling文件有问题,因为它给我一个错误: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()

1 个答案:

答案 0 :(得分:0)

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

您还可以将固定文件大小设置为104857600;你可能想用os.stat得到这个,即。 os.stat(filename).st_size

HTTP错误代码415表示:

  

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

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

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