0

既存の Java プロジェクト用の Web サービスを作成しようとしています。私の Java プロジェクトでは、ファイル パスの場所を入力するとドキュメントを処理し、それを Postgresql データベースに挿入できます。動的 Web プロジェクトを作成しました (Tomcat 6、RESTful Web サービス、および jersey を使用)。これまでの Web プロジェクトでは、localhost ブラウザーに [Choose File] ボタンがあり、ファイルを選択できます。その後、ドキュメントを「送信」できます。ただし、現在はドキュメントをコンピューターの別の場所にアップロードするだけです。「ファイルを選択」してから、ファイルパスの場所をJavaプロジェクトに渡し、Javaプロジェクトがそれを処理してデータベースに挿入することは可能ですか? もしそうなら、どうすればそうすることができますか?

どんなアイデアでも大歓迎です、お時間をいただきありがとうございます!

エリルサベス

4

3 に答える 3

1

Java サーブレットを使用して、次のライブラリを調べる必要が あります。 http://commons.apache.org/fileupload/ そこからは簡単です。

于 2012-07-31T19:20:53.263 に答える
1

Java サーブレットでは、doPost メソッドを実装する必要があります。その方法では、Apache http://commons.apache.org/fileupload/の FileUpload API を使用して、クライアントからアップロードされたファイルにアクセスします。

ここにあなたが始めるための何かがあります:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     DiskFileItemFactory disk = new DiskFileItemFactory();
     disk.setRespository(new File(TEMP_STORAGE));

     ServletFileUpload upload = new ServletFileUpload(disk);
     upload.setFileSizeMax(MAX_FILE_SIZE);
     List<FileItem> files = upload.parseRequest(request);

     //...get actual file with files.get(index).getInputStream() and process them....
     .....
}

ただし、何かを実装する前にドキュメントを読んでください

クライアント側では、この種のマークアップを含むフォームを作成します:

<form enctype="multipart/form-data" ...
于 2012-07-31T19:22:49.550 に答える
0

クライアントからサーバーにファイル名を送信してから、サーバーにファイルをフェッチさせる信頼できる方法はありません。代わりに、Postgresの既存のコマンドラインクライアントよりもソフトウェアをより便利にしたい場合は、ファイル全体をアップロードする必要があります(クライアントとサーバーが同じマシン上にある場合でも)。

大きなファイルを受け入れることが予想される場合は、ストリーミングアプローチを使用して、ファイルのコンテンツをリクエストからデータベースに直接プッシュすることを強くお勧めします。そうしないと、ヒープスペースに大きな負荷がかかる(たとえば、ファイル全体をメモリにロードしようとする場合)、またはファイルをバッファリングするためにディスクに書き込むときにパフォーマンスと同期の問題が発生するリスクがあります。JDBC APIはデータベースにデータをストリーミングできるため、最善の策は、リクエストのInputStreamをデータベースに直接接続することです。

Apachecommons-uploadおよびServlet3.0file-upload機能を含むほとんどの「ファイルアップロード」APIは、ファイルをディスク上の一時ファイルにアップロードし、要求が処理された後にそれらを削除するように設定されていることに注意してください。提供されているストリーミング機能はどれも信じられないので、自分で作成する必要があるかもしれません。

于 2012-08-01T00:57:32.923 に答える