- PR -

JSPでファイル選択ダイアログを開き そのファイルをサーバへUPする方法

投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2005/04/16
投稿数: 51
投稿日時: 2005-04-16 23:24
Tomcatを利用してWebアプリを作成します。

実現したい一つの機能に次のようなものがあります。
「参照」ボタンが押下されるとファイル選択ダイアログが開き、
そこでローカル端末にあるファイルを選択してサーバにアップロードすることです。

JSPでファイル選択ダイアログを表示する方法と
それで選択されたファイル(テキストボックスに絶対パスで表示)を
サーバの決まったディレクトリにアップロードする方法を教えてください。

よろしくお願いします。
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2005-04-17 09:48
ものすごく、FAQなんですけど・・・。
少しは御自分で調べました?

http://www.google.co.jp/search?q=java+file+%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89

でも見てください。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-04-17 13:15
ホイッ
つhttp://www.atmarkit.co.jp/fjava/javatips/106jakarta018.html
未記入
ベテラン
会議室デビュー日: 2005/04/16
投稿数: 51
投稿日時: 2005-04-18 15:05
親切にお教えいただきありがとうございます。

ところで、
サンプルを参考にテストしてみたのですが
次のようなエラーが出ます。

(Tomcatのバージョンは5.0.16です。
設定はインストール時のまま別段触っていません。)
===================================================================================
exception

javax.servlet.ServletException: サーブレットクラス UploadServlet を初期化中にエラーが発生しました
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
java.lang.Thread.run(Unknown Source)

-------------------------------------------------------------------------------------
root cause

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
java.lang.Class.getConstructor0(Unknown Source)
java.lang.Class.newInstance0(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
java.lang.Thread.run(Unknown Source)
===================================================================================
ログのとおり、ファイル選択・指定画面でUploadのボタンを押下し
サーブレットに移って直ぐにエラーになっています。

どう対処すべきか、教えていただけませんでしょうか?
宜しくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-04-18 15:12
根本原因として NoClassDefFoundError が発生しているようです。
まず、このエラーがどのようなときに発生するのか、また一般的のどのように対処すべきなのか調べてみましょう。
未記入
ベテラン
会議室デビュー日: 2005/04/16
投稿数: 51
投稿日時: 2005-04-18 16:32
丁寧にお教えいただきまして誠にありがとうございました。

EclipseやTomcatの基礎的なことを分かっていませんでした。
Eclipseで該当するプロジェクトを右クリックし
プロパティから「Java Build Path」>「Libraries」タブを選択して
「外部Jarの追加」さえ行えばClassパスが通り
必要なライブラリの取り込みも行われると思い込んでいました。

【WEB-INF/lib】 内に必要なJarファイルを取り込むことによって
クラスが見つからないという先の問題は解決しました。
どうもありがとうございました。

実はこの問題が解決し、無事思いの通りにファイルがUpできたと思ったら
work内に「upload_jsp.java」というファイルができており
(ファイル選択等のJSPは「upload.jsp」)
そのソースがエラー状態になっていました。
次はこの問題を解決していきたいと思います。

これからも宜しくお願いいたします。
未記入
ベテラン
会議室デビュー日: 2005/04/16
投稿数: 51
投稿日時: 2005-04-18 17:25
ファイルのUploadを実行すると、
public final class upload_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent
というJavaファイルが一つ【work】下にできてしまいます。
その他には【tldCache.ser】というファイルもあります。

何度も同じディレクトリに異なるファイルをUploadしても
この不明なファイルは数が増えたりすることはありません。

(1)もしこのファイルについて詳細がわかる方がいらっしゃいましたら
教えていただけませんか? (どのような意味を持つのか、また勝手に捨てても良いものか)

(2)このファイルを捨てても今のところ悪影響は見られないので
---とはいってもUploadを行えば必ず再作成されますが---
バッチファイルか何かで当該ディレクトリにこの名前のファイルがあれば
削除するようスケジュールを組もうかと思っていますが、
問題はないでしょうか?

よろしければお教えください。
=============================================
開発(テスト)環境
(1)TOMCAT
5.0.16
(2)Eclipse
2.1.2
(3)Eclipse TOMCAT PLUGIN
com.sysdeo.eclipse.tomcat_2.2.1
=============================================
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-04-18 17:33
workは、Tomcatの作業ディレクトリです。
ですので、人間がいじくる必要はありません。

で、JSPは、HTMLみたいに見えますが、実際は、サーブレットとして動作します。
workディレクトリの下で、
1.*.jspをコンパイル可能なJavaソースファイルに変換する。ファイル名は*_jsp.java
2.*_jsp.javaをコンパイルして、*.classファイルを生成する。
ということが行われているわけです。

スキルアップ/キャリアアップ(JOB@IT)