2017年6月29日木曜日

FreeBSD で fine-uploader を使ってみた(その3)

 前々回,FreeBSD で fine-uploader を使ってみた(その1)として fine-uploader によるサーバーへのファイルのアップロードについて書いた。 また,前回FreeBSD で fine-uploader を使ってみた(その2)として Endpoint ルーチンについて書いた。
 今回は chunking(分割送信)の際の結合ルーチンについて書こう。 結合ルーチンは通常の Endpoint ルーチンとは別に用意された Endpoint ルーチンであり,分割送信が完了した時(全ての分割ファイルの送信が完了した時)に呼ばれる。 そのため,中身は通常の Endpoint ルーチンとほぼ同じに見える。

 以下に chunking の結合用の Endpoint ルーチンのソースを書いておく。 説明はソースの後で書こう。

FreeBSD で fine-uploader を使ってみた(その2)

 前回,FreeBSD で fine-uploader を使ってみた(その1)として fine-uploader によるサーバーへのファイルのアップロードについて書いた。 そこでは,fine-uploader ライブラリを使ったアップロードのポータルサイト(入口サイト)について書いた。 今回は fine-uploader ライブラリを使う際のサーバー側(ファイルを受け取る)ルーチンについて書こう。

 サーバー側の受け取りルーチンは fine-uploader では Endpoint と呼ばれる。 fine-uploader のserver-example には,PHP,node.js,Java,Python のサンプルもあるが,ここではPerlによる Endpoint のサンプルをベースにして,多少アレンジしたものを用いた。

 以下に Perl による Endpoint を書こう。

2017年6月28日水曜日

FreeBSD で fine-uploader を使ってみた(その1)

 続きとして,FreeBSD で fine-uploader を使ってみた(その2)に Endpoint ルーチンについて書いた。
さらに,FreeBSD で fine-uploader を使ってみた(その3)に,分割送信時のファイルの結合ルーチンについて書いた。

 なんかタイトルがごちゃごちゃしてしまったが,要は fine-uploader を使ってみた,というお話である。

 以前から,サーバーにファイルをアップロードしてもらうのに Uber Uploader というのを使っていた。Uber Uploader はいわゆる Ajax を使って,Progress Bar を表示しながらアップロードをしてくれる,というもので,2011 年にこのブログに Uber-Uploader 6.8.2 の使い方(その1)として Uber Uploder の使い方を書いてみた。
 しかし,Uber Uploader もそろそろ古くなり,更新もされなくなっており,php の新しいバージョンに対応していない,などの問題が出始めた。 そこで,progress bar を表示してくれるアップローダーを探し,fine-uploader というのを使ってみたので,ここに書いておこう。

 fine-uploader は,基本的は JavaScript を使ったファイルのアップローダー用ライブラリである。 一番いい点としては,他のライブラリ(例えば jQuery など)等を使わなくても済む,という点がある。 他のライブラリ等を使わないといけないとなると,その別ライブラリ等のバージョンが上がると uploader が使えなくなる可能性が出てくる。 Uber Uploader の場合も,Perl のパッケージが更新されると不具合が出たり,php のバージョンが上がると不具合が出たりした。 jQuery や php は,ときどき後方互換性がないバージョンアップがなされるため,ある日突然アップローダーが使えなることがある。 自分が書いたスクリプトなら,どこでどのライブラリやパッケージを使ったかを知っているので修正は比較的簡単だが,他の人が作ったライブラリだと,どこに問題があるのかを探るところから始めないといけないため修正が大変である。そのために,他のライブラリに依存してない,というのは大きな魅力である。

 その点,fine-uploader は jQuery を使うこともできるが,jQuery なしでも使えるので,何かあれば自分で対処しやすいと考えた。 fine-uploader の使い方については,fine-uploader の公式サイトのドキュメントのページに書いてある(英語だけど…)が,少しだけ説明しておこう(説明になってないかも…)。