我正在使用JSP将blob文件从HTML表单上传到数据库。我需要将文件名插入数据库。我知道文件名存储在内容处置标头中,我怎么能得到它?
如果您使用 JavaEE 6 上传文件,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");
见部分。
正如@Marc提到的,我没有处理URL编码。(他还将文件名周围的引号设为可选。
fileName = URLDecoder.decode(fileName, StandardCharsets.ISO_8859_1);
未选中,但标头的 HTTP 编码应为默认 ISO-8859-1。