GWT‎ > ‎

gwtupload

公式:http://code.google.com/p/gwtupload/

gwtuploadはApache2.0ライセンスのオープンソースのGWTを使ったファイルアップロードライブラリーです。
Apache Software Foundationcommons-fileuploadがベースになっています。

普通のServletだけでなく、GAEにも対応しつつあります。
転送状況をパーセントで表示できたりするのが特徴です。

こういう人にお薦め

ファイルアップロード時の転送状況を表示させたい

画像は一つのファイルが選択できるSingleUploaderでの転送状況、画面中央に進行状況が表示される
この機能をGWTで実装するのは結構面倒です。

複数のファイルをキューで処理したい

画像は複数のファイルを追加できるMultiUploaderでの転送状況
完了したものはDoneとなり、アップロード予定の物はQueuedとなる。
アップロード中にもファイルを選択で追加可能

アップロード時にキャンセル機能を加えたい

アップロード中は左のXアイコンでいつでもキャンセル可能になる

手軽に非同期通信でファイルを転送したい

時間がかかり、また失敗の可能性があるファイル転送を非同期で別にするのはWebアプリが使いやすくなります。
これをGWTで手軽に実現するにはgwtuploadはとてもいいライブラリーです。
ただ逆にアップロードに他のフィールドを含ませるのは面倒

現在未対応

複数ファイルをドロップで追加  issue 34で対応予定

Google App Engine対応について

0.6.1を試してみましたが、メムキャッシュに保存するAppEngineUploadActionは動いたがBlobstoreUploadActionはエラーが出ました。
java.lang.NullPointerException
at com.google.appengine.api.blobstore.dev.UploadBlobServlet.handleUpload(UploadBlobServlet.java:380)
at com.google.appengine.api.blobstore.dev.UploadBlobServlet.access$000(UploadBlobServlet.java:72)
at com.google.appengine.api.blobstore.dev.UploadBlobServlet$1.run(UploadBlobServlet.java:101)

ただ、0.6.2-snapshotやsvnの方では動くらしい by Google Group

開発メモ

独自の保存システム作る場合、commons-fileuploadのフレームワークの上に、このgwtuploadのフレームワークが出来ていますので
UploadActionを拡張しつつ、FileItemFactoryを実装する必要があります。付属のソースコードが参考になるでしょう。

エラーメッセージはUploadServlet.classのgetUploadStatusにてハードコーディングされています。
エラーメッセージをダイアログに出すのは、BaseUploadStatus.classのsetErrorの所です。
なぜファイルにc:\fakepath が付くのは不明
・commons-fileuploadの仕組み?


SingleUploaderの引数 FileInputTypeの違いによる表示の違い

上から、ファイル選択後のデフォルト(BROWSER_INPUT)・ANCHOR・LABEL・BUTTON

ANCHORはファイル選択後もテキストは変わりません。
BUTTONは、たまにレイアウトが変になることがあります。
LABELは無駄なfakepathとか付きます。




Comments