JoomlaにXMLRPCで画像を登録する

前回、Javaを使ってXMLRPC経由でJoomlaに記事を登録できました。
実際の記事では画像も登録できるのが望ましいです。
画像などをアップロードできないか試行錯誤してみました。

import java.io.File;
import java.net.URL;
import java.util.Hashtable;

import org.apache.commons.io.FileUtils;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

/**
 * Joomlaに記事を登録
 * @author admin
 *
 */
public class XmlRpcTest {
	public static void main(String[] args) throws Exception {
	    try {
	        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();

		config.setServerURL(new URL("http://joomla-site/component/xmlrpc/service.xml"));
		XmlRpcClient client = new XmlRpcClient();
		client.setConfig(config);

		File file = new File("z.png");
		byte[] bytes = FileUtils.readFileToByteArray(file);

		Hashtable<Object,Object> hash = new Hashtable<Object,Object>();
		hash.put("bits", bytes);
		hash.put("type", "application/octet-stream");
		hash.put("name", "zzz.png");

		Object[] params = new Object[4];
		params[0] = "0";            // blogid
		params[1] = "username";     // ユーザ名
		params[2] = "password";     // パスワード
		params[3] = hash;           // 画像データ

		Object result = client.execute("metaWeblog.newMediaObject", params);
		System.out.println(result);

	     } catch(Exception e) {
	        System.out.println("main::Post 記事投稿で失敗");
	        System.out.println(e.getMessage());
	     }
	}

}

バイナリデータをどうするか悩みましたが、そのまま渡して大丈夫でした。

システム開発

Posted by @erestage