找不到在weblogic下运行servlet的HTTP PUT请求的原始文件名

找不到在weblogic下运行servlet的HTTP PUT请求的原始文件名,http,servlets,weblogic,filenames,put,Http,Servlets,Weblogic,Filenames,Put,我已经设置了一个简单的servlet用作文件服务器。我使用Weblogic 10.3.2作为容器 我想处理PUT请求,所以实现了该方法。由于这是一个PUT请求,我希望在头文件中找到我推送到服务器的文件名 我推送一个名为test.txt的文件,其中包含“Hello World” 使用curl和netcat,下面是请求 PUT /test.txt HTTP/1.1 User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.21.2 OpenS

我已经设置了一个简单的servlet用作文件服务器。我使用Weblogic 10.3.2作为容器

我想处理PUT请求,所以实现了该方法。由于这是一个PUT请求,我希望在头文件中找到我推送到服务器的文件名

我推送一个名为test.txt的文件,其中包含“Hello World”

使用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
使用servlet和weblogic 10.3.2,下面是。 这是我在发送curl命令后,在doPut方法中停止打印HTTPServletRequest java对象时得到的结果

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的inputstream,我会获得文件的内容,但会丢失文件名

有没有办法在HTTPServletRequest中获取原始文件名? 你能解释一下发生了什么事吗


编辑:实际上,我不明白的是,为什么requestURL和requestURI会更改并反映servlet映射而不是原始信息?

文件名不会作为文件的一部分传递。(因此,如果您是从名为“bodyOnly”的文件输入的网页上传帖子,您将从“bodyOnly”参数获得文件名)

因此,您必须找到另一种传递文件名的方法——也许合适的方法是让您的服务器按照

http://xxxxxxx:71xxx/[filename]
所以你用

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

事实上,我尝试了Jetty,获得了相同的HTTP请求转换,这可能与servlet和过滤器映射有关。我尝试了您的解决方案,将/Test/*放在servlet的web.xml中,并从getPathInfo方法获取文件名。我仍然不知道为什么请求头会被修改。
curl -T test.txt http://xxxxxxx:71xxx/test.txt