我在
Java桌面环境中使用NanoHTTPD webserver 2.1.0. (没有
Android)
一切正常……但不是使用POST方法上传文件(表格不支持PUT)
这是我的HTML代码:
choose a file
upload
这是我的服务器方法:
public Response serve(IHTTPSession session) {
if (session.getMethod() == Method.POST) {
Map files = new HashMap();
session.parseBody(files);
//this prints {file=C:\path-to-java-tmp-files\NanoHTTPD-4635244586997909485}
//the number is always different
System.out.println(files.toString());
} else {
//page containing the index.html including the form
return page;
}
}
以下是问题:
临时文件不存在.现有的另一个临时文件具有不同的“数字”,这似乎是正确的文件,因为内容与上传文件的内容相同.那么如何获得正确的临时文件名呢?
另一个问题是:
临时文件包含漏洞POST内容:
-----------------------------115801144322347
Content-Disposition: form-data; name="file"; filename="filename.txt"
Content-Type: application/octet-stream
-->content of the uploaded file
-----------------------------115801144322347--
如果内容是pic或二进制文件,则这是一个问题.
似乎NanoHTTPD不会对POST请求做任何特殊操作.它总是一样…将请求保存到tmp文件并提供页面.
所以:
– 如何获取正确的临时文件?
– >我认为这是一个错误.我得到了正确的路径和名称,但“数字”已被破坏. idk …如果发生上传,我应该暂时更改java tmp-path,然后始终删除该文件.那么我只有一个tmp文件独立于任何命名?
– 如何从文件中删除html请求标头
或者我做错了什么?这是将文件上传到nanohttpd的正确方法吗?
谢谢你的帮助!