python - 图片从 Python 或 cURL 上传到 Tumblr?

标签 python http post curl tumblr

我正在从事一个项目,该项目涉及从 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 以及上传文件的“正常发布”方法。如果两者都有效,我会很高兴。

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 可能有点矫枉过正。

谢谢!

最佳答案

                 'data': open('../data/media/pics/2009/05-14/100_1167.JPG'),

看起来你只是传入一个文件对象..在那里添加一个.read()

关于python - 图片从 Python 或 cURL 上传到 Tumblr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3266194/

相关文章:

python - 如何用 Python 和 GTK 记录用户按下鼠标按钮的位置?

python - matplotlib:创建两个(堆叠的)具有共享 X 轴但独立 Y 轴值的子图

http - netcat - 接收包含多个文件的多部分 TCP/HTTP 响应

json - 测试 Catalyst REST API 的最简单方法是什么

java - java中如何接收文件(servlet/jsp)

ruby-on-rails - REXML::ParseException 没有有效的根

php - 使用sha256 python使用base64编码计算hmac值

python - 何时使用,何时不使用 Python 3.5 `await` ?

http - 由于标准 Google Chrome 脚本导致的 SSL 错误

ios - Swift to php 在本地服务器上不能在我的设备上运行?