(今どきFTPですか?っていう議論はさておき)FTPサーバにアップロードするってこれまでも需要がありそうだったのになぜかやったことがなかったので、調べてやってみた。サンプルコードはこんな感じ。




ポイント

  • ポート番号を「16910」で設定する
  • パッシブモードをオンにする


割と何も難しいこと考えずに実行出来ました。


これで何がやりたいか

やりたいことは、楽天市場のショップページに掲載しているバナー(セール情報など)をタイマーセットして更新する、です。バナーはショップサイト内の「共通説明文(大)」というパーツにimgタグを貼り付けることで表示させているので、これを更新する(掲載または削除)場合には、管理ページを開きログインして更新しなくてはいけません(「共通説明文(大)」に関するAPIにはGETしか実装されていない)。

ログイン自体が煩雑であるのと同時に、楽天のセールはなぜか終了時間が毎回違って、「午前2時終了」とか普通にあるので、それをタイマーで管理したい。翌日下げれば良いじゃんと思うけれど、翌日休日だとだいぶみっともないことになるので、自動的に非掲載に出来るのならそれがベスト。


なんの制限もなく考えればいくつか方法は思いつくのですが、この部分には制限があって、

  • 楽天GOLDサーバ以外の外部ファイルをimgタグで貼り付けることは出来ない
  • scriptタグやiframeタグを書くことは出来ない


またiframeを使って、

  • 楽天GOLDのページを表示させる → 楽天GOLDのページでJavaScript処理

という方法でも実現出来るように見えますが、その場合、iframeの高さをCSSで調整する必要があり、その更新が煩雑でいまいち。


そんな試行錯誤を経て現在検討中なのが、

  • バナー用のファイル名は固定(banner.jpgなど)しておき、あらかじめ用意して置いたファイルで上書きする
  • バナーを削除するときは、ブランクファイル(1*1の背景色ファイルなど)

という方法。楽天GOLDのサーバキャッシュやブラウザのファイルキャッシュで表示が更新されるのが遅れる可能性はありますが、少なくとも自動的な処理は出来そう。あいかわらず力技ですけどね(笑)


でも楽天の機能が足りないんだから仕方ない。