PHP/VBA用Data APIライブラリでのアイテムのアップロード

Movable TypeのPHP用およびVBA用Data APIライブラリで、アイテム(画像等)をアップロードする方法を解説します。

1.uploadAssetエンドポイント

アイテムをアップロードするには、「uploadAsset」というエンドポイントを使います。
パラメータとして、以下の情報を渡します。

名前内容
site_idアップロード先のウェブサイト/ブログのID
fileアップロードするファイルのパス
pathアップロード先のディレクトリ
autoRenameIfExists1を指定した場合、サーバーにすでに同名のファイルがあるときには、ファイル名をランダムに変えてアップロードする
normalizeOrientation1を指定した場合、アップロードしたファイルのExifデータから、向きを適切に回転する

なお、アイテムの各種の情報(概要など)を設定するには、アップロードを行った後で、「updateAsset」のエンドポイントを実行します。

2.PHPでの例

PHPライブラリを使って、以下のようにアイテムをアップロードしたいとします。

項目内容
mt-data-api.cgiのアドレスhttp://www.foo.com/mt/mt-data-api.cgi
クライアントIDsample
ユーザー名foo
パスワードbar
アップロードするファイル/home/foo/hoge.jpg
アップロード先ディレクトリimages
アップロード先のウェブサイトのID1

この場合、以下のようなプログラムを実行します。

require_once('mt-data-api.php');

// 初期化
$api = new MTDataAPI('http://www.foo.com/mt/mt-data-api.cgi', 'sample');

// 認証
$response = $api->authenticate(array('username' => 'foo', 'password' => 'bar'));
if (isset($response['error'])) {
	認証失敗時の処理
}

// アイテムのアップロード
$params = array(
	'file' => '/home/foo/hoge.jpg',
	'path' => 'images',
	'site_id' => 1,
);
$response = $api->uploadAsset($params);
if (isset($response['error'])) {
	アップロード失敗時の処理
}

3.VBAでの例

上記のPHPの例をVBAで書き換えると、以下のようになります。
ただし、アップロードするファイルは、Cドライブの「\home\foo\hoge.jpg」だとします。

Sub UploadAsset()
    Dim api As MTDataAPI, i As Integer
    Dim response As Scripting.Dictionary, params As Scripting.Dictionary
 
    ' 初期化
    Set api = New MTDataAPI
    api.init "http://www.foo.com/mt/mt-data-api.cgi", "sample"
    ' 認証
    Set params = New Scripting.Dictionary
    params("username") = "foo"
    params("password") = "bar"
    Set response = api.send("authenticate", params)
    If response.Exists("Error") Then
        認証失敗時の処理
    End If
    ' アイテムのアップロード
    Set params = New Scripting.Dictionary
    params("file") = "C:¥home¥foo¥hoge.jpg"
    params("path") = "images"
    params("site_id") = 1
    Set response = api.send("uploadAsset", params)
    If response.Exists("Error") Then
        アップロード失敗時の処理
    End If
End Sub