wordpress ブログに写真をアップロードできる chrome 拡張機能を作成しようとしています。ここまでは順調ですが、wordpress rpc API はバイナリ形式の画像を想定しています。
http://codex.wordpress.org/XML-RPC_WordPress_API/Media#wp.uploadFile
残念ながら、私が持っているデータはbase64でエンコードされています
http://developer.chrome.com/extensions/tabs.html#method-captureVisibleTab
コードを起動したときに、Wordpress から得られる唯一のフィードバックは次のとおりです。faultCode -32700, parse error. not well formed
これです:
chrome.tabs.captureVisibleTab(null, {"format": "png"}, function(img) {
var data = new Object();
data.name = 'Screenshot' + Math.floor(Math.random() * 100); //pageTitle
data.overwrite = false;
data.type = 'image/png'; //string:File MIME type.
//transfrom screencapture into binary data for wordpress xmlrpc
var regex = /^data:.+\/(.+);base64,(.*)$/;
var matches = img.match(regex);
data.bits = atob(matches[2]); //string: binary data. Shouldn't be base64-encoded.
$.xmlrpc({
url: wp.url,
methodName: 'wp.uploadFile',
params: [0, wp.user, wp.password, data],
success: function(response, status, jqXHR) {
//this return the post id
alert("worked :-)" + status + "/" + response + "/" +
jqXHR.responseXML + "/" + response.url);
},
error: function(jqXHR, status, error) {
alert("fail :-(" + status + " " + error + " " + jqXHR.responseXML);
}
});
});
どうすればこれを機能させることができるか分かりますか?どうもありがとう!