从Content-Disposition获取文件名

时间:2014-12-01 10:23:55

标签: java http jsp content-disposition

我使用JSP将blob文件从HTML表单上传到数据库。我需要将文件名插入DB。我知道文件名存储在Content-Disposition header中,我怎么能得到它?

1 个答案:

答案 0 :(得分:14)

如果您使用带有HttpServletRequest.getPart的JavaEE 6上传文件:

Part part = request.getPart("xxx"); // input type=file name=xxx
String disposition = part.getHeader("Content-Disposition");
String fileName = disposition.replaceFirst("(?i)^.*filename=\"?([^\"]+)\"?.*$", "$1");

请参阅Part


正如@Marc提到的,我没有对待URL编码。 (他还使文件名周围的引号可选。)

fileName = URLDecoder.decode(fileName, StandardCharsets.ISO_8859_1);

未选中,但标头的HTTP编码应为默认ISO-8859-1。