2011-02-16 8 views
1

サーバーにファイルをアップロードするサーブレットを実装する必要があります.GETメソッドではなくファイルをアップロードするためのPOSTメソッドでなければならないと誰もが気付いています。しかし、ファイルをアップロードし、リクエストがPOSTメソッドから来ていても、urlにリクエストのパラメータが表示される方法はありますか?そうでない場合、別の方法がありますか?URLでファイルをアップロードする

現在、POSTメソッドを使用して、私のサーブレットは、私が欲しいものhttp://example.com/FileUpload/UploadFile

ある?http://example.com/FileUpload/UploadFileのようなあなたの入力のid = 125 & FILENUM = 5

おかげsomehtingです。

+1

POSTはサーバーにファイルを送信するための推奨方法です。 1つの理由は、GETパラメータの長さが制限されているためです。 – miku

答えて

2

は単に

http://example.com/FileUpload/UploadFile?id=125&fileNum=5

代わりの

http://example.com/FileUpload/UploadFile

に投稿するあなたはパラメータを持つURLに投稿することはできませんそのような制限はありません。あなたは今やっているように投稿データを処理することができます。また、getパラメータも取得できます。

+0

このようにする方法を知るためのリンクやドキュメントがありますか? – David

+0

あなたには分からない部分はどれですか?現在どのようにしていますか?そして、どのようにidとfileNumの値を取得する予定ですか? –

1

私はそれは洗練された解決策ではないと思うが、JavaScriptを使ってフォームエレメントの動作を変更してから、それを送信してクエリーストリングパラメータを組み込むことができる。

フォームのようなものになります。そして、あなたは、フォームのアクション要素に変更するためにJavaScriptを必要とします

<form method="POST" id="myForm" onSubmit="submitMyForm(this)> 
    <input type="text" id="id"> 

function submitMyForm(theForm) { 
    theForm.action="http://example.com/FileUpload/UploadFile?id=" + 
     getElementById("id").value; 
    theForm.submit(); 
} 

をあなただけでパラメータを提出することはできませんいくつかの理由があります投稿し、サーバー側でそれらを引き出しますか?

+0

"ポストでパラメータを送信してサーバ側で引き出すことができない何らかの理由はありますか?"私はファイルをアップロードするためにURLを使用する複数のクライアント(非gui)を持っています。だから、私は良い方法は、ファイルのIDを置くか、あなたのURLにあなたを持っていると思った。 – David

0

POSTでパラメータとファイルを送信できます。たとえば、HTMLでは、この値を持つフォームを持つことができますが、それらは非表示のタイプにすることができます。 サーブレットでは、GETを使用するのと同じ方法で値を取得できます。

ユーザーはURL方向バーの値を変更できないため、POSTメソッドを使用する方がよい場合もあります。

0

また、マルチパート/フォームデータの投稿を行う場合は、ファイルとともに複数のパラメータを含めることができます。パラメータは、ファイルとともに、郵便体の一部として送信されます。