【发布时间】:2012-03-07 06:29:42
【问题描述】:
我正在尝试在 wordpress 上使用 xmlrpc 上传文件。我已经使用 php 完成了这项工作,但这次我必须使用 python 并且有些东西不起作用。
更具体地说,执行此操作的方法是调用 xmlrpc 函数 wp.uploadFile,该函数在代码库 http://codex.wordpress.org/XML-RPC_wp#wp.uploadFile 或 metaWeblog.newMediaObject 中进行了说明。问题是编码。从 php 我使用了一个正在做脏活的类。即 ixr_base64 类显然做到了这一点。在 python 中,我尝试导入 base64lib 并使用它的 b64encode 函数,但它不起作用。
更具体地说,这是我正在使用的 python 代码:
import xmlrpclib
import urllib2
import base64
def get_url_content(url):
try:
content = urllib2.urlopen(url)
return content.read()
except:
print 'error!'
file = get_url_content('http://www.legaljuice.com/Fly.jpg')
file = base64.b64decode(file)
server = xmlrpclib.Server('http://localhost/xmlrpc.php')
xarr = ['1', 'admin', 'pass', {'name':'sssaaa.jpg', 'type':'image/jpeg', 'bits':file, 'overwrite':'true'}]
result = server.metaWeblog.newMediaObject(xarr)
print result
这不是诀窍。它在 wordpress 结束时没有正确解码。现在,我知道这不是 wordpress 的错,因为我以前用 php 做过这个,并且有大量的应用程序、android、ios、桌面和 web 可以使用 xmlrpc 进行文件上传。
根据我的研究,带有 base64 模块的 python 提供 RFC 3548 中指定的数据编码和解码,而带有 base64_encode 的 php 使用 RFC 2045 第 6.8 节 在这一点上,我被卡住了。我已经尝试了一切,但到目前为止没有任何效果。我只是在 wordpress 的媒体页面上收到损坏的文件。
如果可以的话,请帮忙。
【问题讨论】:
标签: python wordpress xml-rpc encode