我目前正在编写一个程序,使用nanoHTTPD将文件上传到服务器。目前,我可以使用预先指定的名称成功上传文件。但是,我想保留正在上传的文件的原始名称。
现在如何上传:
Original filename: foo.jpg
Uploaded filename: file123.whatever
我希望如何上传:
Original file name: foo.jpg
Uploaded filename: foo.jpg
以下是使用的HTML:
<FORM ENCTYPE="multipart/form-data" ACTION="/uploaded.html" METHOD=POST>
Upload a file: <INPUT NAME="userfile1" TYPE="file">
<INPUT TYPE="submit" VALUE="Send File">
</FORM>
这是vanilla nanoHTTPD代码供参考:http://pastebin.com/pMNS3VKf
注意:我更喜欢使用Java SE并避免使用Java EE。
欢迎任何建议,谢谢。
编辑:简而言之,我需要学习的是从HTML POST中获取文件名。
答案 0 :(得分:4)
我不确定您的NanoHTTPD是否与我的相同,但是我可以通过查看parms参数对象来检索原始文件名,该对象用于从文件Parameters对象中检索文件的相同键。
Enumeration<Object> keys = files.keys()
while (keys.hasMoreElements())
{
String key = keys.nextElement().toString();
String origFileName = parms.getProperty(key);
String fsFileName = files.getProperty(key);
this.renameFile(fsFileName, origFileName);
}
检索文件名后,您可以使用任何想要重命名文件的方法。 (通过适当的检查。如果你完全信任他们的原始文件名,这可能是一个巨大的安全漏洞。)