java - 下载文件时如何在 Spring 中动态设置 res.setContentType ("application/xls")

标签 java jsp spring-mvc download

我想下载服务器本身可用的文件

AppName\resources\attachemnts\file.extension(这可以是任何内容) 我从网上得到了代码,以下是相同的。

@RequestMapping(value = "/fileDownload", method = RequestMethod.GET)
        public void handleFileDownload(@RequestParam("fileLocation") String fileLocation,HttpServletResponse res) {
            try {

                URL url = getClass().getResource(fileLocation);
                File f = new File(url.toURI());
                System.out.println("Loading file "+fileLocation+"("+f.getAbsolutePath()+")");
                if (f.exists()) {
                    res.setContentType("application/xls");
                    res.setContentLength(new Long(f.length()).intValue());
                    res.setHeader("Content-Disposition", "attachment; filename=Test.xls");
                    FileCopyUtils.copy(new FileInputStream(f), res.getOutputStream());
                } else {
                    System.out.println("File"+fileLocation+"("+f.getAbsolutePath()+") does not exist");
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }

我必须将 res.setContentType("application/xls"); 设置为动态,因为文件类型每次都会不同。

如何获取文件类型?

最佳答案

为了确定文件类型,您可以使用任何检查 file's magick numbers 的库并返回其文件类型。例如:

另请参阅相关问题:

关于java - 下载文件时如何在 Spring 中动态设置 res.setContentType ("application/xls"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232233/

相关文章:

javascript - 无法让 .focus 处理动态创建的输入元素

java - 类型转换变量会改变值(value)吗?

java - 改变 nimbus JPopupmenu 行为

java - 使用后退按钮时显示标签分页不起作用

java - 将序列的下一个值与字符串连接起来

Java Spring - 如何处理缺少所需的请求参数

mongodb - Kotlin 数据类 : How generate an MongoDB ObjectId for an embedded document

java - 域文件夹在 Spring Boot 项目中起什么作用以及应该在其中存储哪些类?

java - 如何在 Camunda-bpm 中结束流程实例?

java - 如何在打印机中打印带有图像作为 Logo 的账单,java