Java servlet切断了文件扩展名

时间:2016-09-12 23:08:51

标签: java servlets

我试图通过我的Java应用程序提供本地或代理文件。

有这样的东西

    @ResponseBody
@RequestMapping(value = "/file/{file}", method = RequestMethod.GET)
public void doGet(HttpServletRequest request, HttpServletResponse response,@PathVariable("file") String f) throws IOException {

    String filename = URLDecoder.decode(f, "UTF-8");
    File file = new File("resources/files/", filename);
    response.setHeader("Content-Type", "video/mp4");
    response.setHeader("Content-Length", String.valueOf(file.length()));
    response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
    Files.copy(file.toPath(), response.getOutputStream());

}

使用示例网址,例如

  

example.com/file/out2KP2_1.mp4

我收到错误:

  

访问/file/out2KP2_1.mp4时出现问题。原因是:

     

resources \ files \ out2KP2_1引起:

     

java.nio.file.NoSuchFileException:resources \ files \ out2KP2_1 at   sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)

如果我向url和requestMapping添加尾随/,它可以工作,但在iOS和其他一些地方,视频播放器似乎不喜欢加载带有斜杠的文件,因此它不会适合我的目的。

任何帮助appriciated。

1 个答案:

答案 0 :(得分:0)

感谢降价。拿它你不知道答案!?

这是Spring的一个问题,你必须添加:。+到文件URL变量

即。 @RequestMapping(value =“/ file / {file:。+}”,method = RequestMethod.GET)