我正在从Python上传图片到Tumblr的项目中工作。我已经成功地使用了Tumblr的API(http://www.tumblr.com/docs/en/api)来发布常规文本帖子,但是图片上传一直让我感到困扰。他们服务器返回的错误信息仅告诉我“上传照片出错”,这并没有什么帮助。
由于他们的API似乎基于标准的HTTP POST操作,所以我知道必须有一种方法可以做到这一点。不幸的是,我已经尝试了几天,没有取得任何进展,决定向你们寻求帮助。
我已经尝试过curl和Python的库:httplib、urllib、urllib2,以及一个名为urllib2_file的第三方库(http://fabien.seisen.org/python/urllib2_file/)。我很沮丧,因为我还没有使它们正常工作,但我愿意尝试其他你们能想到的终端应用程序。
每种方法都可以正常处理简单的文本帖子,但每种方法似乎都无法正确完成照片上传。
这是我使用urllib2_file的语法。由于urllib2不支持上传数据的'multipart/form-data'方法,因此我使用urllib2_file来添加该功能 - 但我无法使其正常工作。Tumblr API表示他们的服务器接受'multipart/form-data'和“普通发布”方法上传文件。如果其中任何一种方法可行,我会很高兴的。
如果它能正常工作,使用字典定义字段确实很容易,并且未来我可以让它看起来更加清晰。但是,如果出现问题,请问如何进行故障排除?目前我不知道如何了解可能出现的问题。我希望我有足够的注意力去学习http RFC。
我一直在考虑在我的计算机和服务器之间嗅探数据包,但是逆向工程HTTP可能会过度了吧。
谢谢!
由于他们的API似乎基于标准的HTTP POST操作,所以我知道必须有一种方法可以做到这一点。不幸的是,我已经尝试了几天,没有取得任何进展,决定向你们寻求帮助。
我已经尝试过curl和Python的库:httplib、urllib、urllib2,以及一个名为urllib2_file的第三方库(http://fabien.seisen.org/python/urllib2_file/)。我很沮丧,因为我还没有使它们正常工作,但我愿意尝试其他你们能想到的终端应用程序。
每种方法都可以正常处理简单的文本帖子,但每种方法似乎都无法正确完成照片上传。
这是我使用urllib2_file的语法。由于urllib2不支持上传数据的'multipart/form-data'方法,因此我使用urllib2_file来添加该功能 - 但我无法使其正常工作。Tumblr API表示他们的服务器接受'multipart/form-data'和“普通发布”方法上传文件。如果其中任何一种方法可行,我会很高兴的。
import urllib, urllib2, urllib2_file
url = "http://www.tumblr.com/api/write"
values1 = { 'email':'EMAIL',
'password':'PASSWORD',
'type':'regular',
'title':'Pythons urllib2',
'body':'its pretty nice. Not sure how to make it upload stuff yet, though. Still getting some "error uploading photo" errors... So unhelpful.'}
values2 = { 'email':'EMAIL',
'password':'PASSWORD',
'type':'photo',
'data': open('../data/media/pics/2009/05-14/100_1167.JPG'),
'caption':'Caption'}
data = urllib.urlencode(values2)
print "just before defining the request"
req = urllib2.Request(url,data)
print "just before doing the urlopen."
#response = urllib2.urlopen(req)
try:
response = urllib2.urlopen(req)
except urllib2.URLError, e:
print e.code
print e.read()
print "figure out how to handle .read() properly"
#the_page = response.read()
#print the_page
print "done"
如果它能正常工作,使用字典定义字段确实很容易,并且未来我可以让它看起来更加清晰。但是,如果出现问题,请问如何进行故障排除?目前我不知道如何了解可能出现的问题。我希望我有足够的注意力去学习http RFC。
我一直在考虑在我的计算机和服务器之间嗅探数据包,但是逆向工程HTTP可能会过度了吧。
谢谢!