I'm uploading a blob file from HTML form to MySQL database using JSP. I need to insert the filename into DB. I know that the filename is stored in the Content-Disposition header, how could I get that? Thanks in advance!
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
If you uploaded the file using JavaEE 6 with HttpServletRequest.getPart
:
Part part = request.getPart("xxx"); // input type=file name=xxx
String disposition = part.getHeader("Content-Disposition");
String fileName = disposition.replaceFirst("(?i)^.*filename=\"?([^\"]+)\"?.*$", "$1");
See Part.
As @Marc mentioned I did not treat URL encoding. (He also made the quotes around the filename optional.)
fileName = URLDecoder.decode(fileName, StandardCharsets.ISO_8859_1);
Not checked, but HTTP encoding for headers should be the default ISO-8859-1.