ファイルマネージャ

Seesaa BLOGで画像や音声のファイルをアップロードするには、「ファイルマネージャ」という機能を使用します。

この機能は、ブログの管理ページであるマイ・ブログからは「ツール」→「ファイルマネージャ」で開くことができ、また記事の投稿・編集ページやコンテンツの編集ページでもページ内に表示することができます。

ファイルマネージャではファイルのアップロードや削除、アップロードしたファイルやサムネイル画像の確認、記事に表示させるためのHTMLの取得、タグの編集などのファイル管理ができますが、その一方で2006年11月現在、アップロードしたファイルの名前を変更することはできません

ファイルマネージャで削除〜アップロードする

ファイルマネージャでは(ディレクトリを含めて)同じ名前のファイルをアップロードすることはできません。OSに備わっているファイルコピーの操作では、そのファイルを上書きする/しないの確認を求めるメッセージを表示するものがあるかもしれませんが、ファイルマネージャではそのようなことはなくアップロードが失敗します。

そのため同じ名前のファイルをアップロード、つまりファイルの上書きや更新のためのアップロードを行うためには、対象のファイルを削除してからアップロードする必要があります。

このように、ファイルマネージャで上書きアップロードを行うにはファイルを事前に削除しなければなりません。もしあなたがXML-RPC APIの扱い方を知っているのであれば、お勧めいたしません(理由は後述)が、1回の操作でファイルを上書きアップロードすることができます。

XML-RPC APIでアップロードする

Seesaa BLOGでも、BloggerMovableTypeなどに端を発するブログ操作のAPI「XML-RPC API」が提供されています。幸いにしてファイルをアップロードするメソッド「metaWeblog.newMediaObject」も公開されているので、これを使用します。XML-RPC エンドポイントやアカウントの設定についてはこちらが参考になります。

アップロードの手段が違っても結局ファイル名が同じなのだから――そう思われることでしょう。確かに既にファイルが存在している旨のエラーレスポンスが返すブログシステムもあるのですが、一方で自動的にファイル名を変更するシステムも存在します。

ところが、Seesaa BLOGのブログシステムであるBlogServerは、このいずれでもないレスポンスを返してきます。以下にBlogServerからのmetaWeblog.newMediaObjectの成功レスポンスのXMLを示します。見やすくするため空白・改行を加えていますが、実際のレスポンスには含まれていません。

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
 <params>
  <param>
   <value>
    <struct>
     <member>
      <name>filename</name>
      <value><string>(path)</string></value>
     </member>
     <member>
      <name>url</name>
      <value><string>(url)</string></value>
     </member>
     <member>
      <name>upload_id</name>
      <value><string>(number)</string></value>
     </member>
    </struct>
   </value>
  </param>
 </params>
</methodResponse>

metaWeblog.newMediaObjectのレスポンスには、必須であるメンバfilenameとurlに加えて「upload_id」なる独自のメンバを返してきます。このupload_idはファイルをアップロードするたびに異なっており、どうやらシステムで一意にファイルを識別するための値のようで、ファイルマネージャの各ファイルのリンク中の値に一致します。

そして注意すべき点は、同じ名前のファイルをアップロードしてもエラーでもファイル名が変更されるレスポンスでもなく、このupload_idのみが異なるレスポンスを返すということです。

2回目(以降)のアップロード後にレスポンスにあるURLを参照すると、後にアップロードしたものが表示されます。従って、ファイルの上書きアップロードは成功しています。

ところが、ファイルマネージャには新旧両方のファイルの情報が列挙されます。ここで更に注意すべき点は、それでは古いものは消しておこうと削除しても、逆に新しいものを削除しても、どちらを削除してもファイルが削除されることです。これはつまり、ファイルマネージャでは列挙されるのにファイルが存在しない状態になるということです。

結局のところ、upload_idは異なってはいてもその実体であるファイルは同一のものであるということです。一方のupload_idの示すファイルを削除してしまえば、必然もう一方upload_idの示す同じファイルも削除されたことになります。

従って、XML-RPCによって上書きアップロードすることは可能ではありますが、ファイルマネージャにこのような不具合(?)があるため、混乱をきたすことになるでしょう。

Seesaa BLOGの今後の対応に期待しましょう。

* * *
·トラックバック i
name sign site
·コメント i ここでは「w≠笑」です。
検索
メイプルストーリー
ロリポップ!
Opera
NOw 時間ねぇー