- - PR -
JSPでファイル選択ダイアログを開き そのファイルをサーバへUPする方法
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-04-16 23:24
Tomcatを利用してWebアプリを作成します。
実現したい一つの機能に次のようなものがあります。 「参照」ボタンが押下されるとファイル選択ダイアログが開き、 そこでローカル端末にあるファイルを選択してサーバにアップロードすることです。 JSPでファイル選択ダイアログを表示する方法と それで選択されたファイル(テキストボックスに絶対パスで表示)を サーバの決まったディレクトリにアップロードする方法を教えてください。 よろしくお願いします。 |
|
投稿日時: 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 でも見てください。 |
|
投稿日時: 2005-04-17 13:15
ホイッ
つhttp://www.atmarkit.co.jp/fjava/javatips/106jakarta018.html |
|
投稿日時: 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のボタンを押下し サーブレットに移って直ぐにエラーになっています。 どう対処すべきか、教えていただけませんでしょうか? 宜しくお願いいたします。 |
|
投稿日時: 2005-04-18 15:12
根本原因として NoClassDefFoundError が発生しているようです。
まず、このエラーがどのようなときに発生するのか、また一般的のどのように対処すべきなのか調べてみましょう。 |
|
投稿日時: 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-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 ============================================= |
|
投稿日時: 2005-04-18 17:33
workは、Tomcatの作業ディレクトリです。
ですので、人間がいじくる必要はありません。 で、JSPは、HTMLみたいに見えますが、実際は、サーブレットとして動作します。 workディレクトリの下で、 1.*.jspをコンパイル可能なJavaソースファイルに変換する。ファイル名は*_jsp.java 2.*_jsp.javaをコンパイルして、*.classファイルを生成する。 ということが行われているわけです。 |