Не удалось заставить этот контроллер возвращать файлы с правильным типом пантомимы - PullRequest
1 голос
/ 22 октября 2019

У меня проблемы с настройкой следующего простого контроллера для правильной работы с Spring Framework 5.2 и Springboot 2.2 с Kotlin 1.3.50. Это простой FileServerController, который обслуживает файлы ниже ~, но я, кажется, получаю двойные вызовы контроллера, а mime-тип возвращаемого файла всегда равен application / json, даже когда я его явно устанавливаю. Если я не верну XML-файлы с правильным MIME-типом, я не смогу заставить браузер выполнять XSL-преобразования на нем. Я несколько уверен (но не уверен), что не-котлинская версия будет работать. Может ли кто-то предложить что-то еще для меня, чтобы попробовать. Большое спасибо.

@Controller
class FileServerController {
    @RequestMapping(value = ["/**"])
    fun getFile(request: HttpServletRequest, response: HttpServletResponse): FileSystemResource {
        var fileName = request.servletPath
        val HOME = System.getenv("HOME")

        println("Requested ${fileName}")

        fileName = "${HOME}${fileName}"
        val file = File(fileName)

        if (file.canRead()) {
            println("Serving ${fileName}")
            if(fileName.endsWith(".xml")) {
                response.contentType = "text/xml"
            } else if(fileName.endsWith(".xslt")) {
                response.contentType = "application/xslt+xml"
            }
            return FileSystemResource(file)
        } else {
            println("Couldn't find ${fileName}")
            throw NotFoundException(fileName)
        }
    }
}

Зависимости в моем pom.xml

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-reflect</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-jdk8</artifactId>
        </dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...