2

ファイルサーバーとして使用するための単純なサーブレットをセットアップしました。コンテナーとして Weblogic 10.3.2 を使用しています。

PUTリクエストを処理したいので、doPutメソッドを実装しました。これは PUT リクエストなので、サーバーにプッシュしたファイルの名前がヘッダーに含まれていることを期待しています。

「Hello World」を含む test.txt という名前のファイルをプッシュします。

curl -T test.txt http://xxxxxxx:71xxx

curl と netcat を使用したリクエストは次のとおりです。

PUT /test.txt HTTP/1.1
User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.21.2 OpenSSL/0.9.8h zlib/1.2.3
Host: xxxxxxxxx:71xx
Accept: */*
Content-Length: 12
Expect: 100-continue

Hello World

サーブレットと weblogic 10.3.2 を使用した場合のHTTPServletRequestは次のとおりです。これは、curl コマンドを送信した後、HTTPServletRequest Java オブジェクトを出力する doPut メソッドで停止したときに取得したものです。

weblogic.servlet.internal.ServletRequestImpl@17d11f0[
PUT /WebServer/FileServlet HTTP/1.1
User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.21.2 OpenSSL/0.9.8h zlib/1.2.3
Accept: */*
Content-Length: 12
Expect: 100-continue

]

HTTPServletRequest の入力ストリームを処理すると、ファイルの内容は取得されますが、ファイル名は失われます。

HTTPServletRequest で元のファイル名を取得する方法はありますか? 何が起こったのか説明していただけますか?

編集:実際に私が理解していないのは、requestURL と requestURI が変更され、元の情報ではなくサーブレット マッピングが反映される理由です。

4

1 に答える 1

2

ファイル名はファイルの一部として渡されません。(したがって、「bodyOnly」という名前のファイル入力を含むWebページからPOSTとしてアップロードする場合は、「bodyOnly」パラメーターからファイル名を取得します)

したがって、ファイル名を渡す別の方法を見つける必要があります-おそらく適切な方法は、サーバーに次の行に沿ってURLを処理させることです。

http://xxxxxxx:71xxx/[filename]

でファイルをアップロードします

curl -T test.txt http://xxxxxxx:71xxx/test.txt
于 2012-12-12T11:06:59.577 に答える