无法从浏览器访问localhost:8080公用文件夹(java春季启动)

时间:2019-10-18 09:28:10

标签: java spring-boot

我有一个Java Spring Boot应用程序,该应用程序具有将文件保存在“ src / main / resources / public / myFiles”路径中的功能。现在,我想访问文件,并且尝试通过键入“ http://localhost:8080/public/myFiles”来访问文件,并且在下面出现错误提示。

  

Whitelabel错误页面   此应用程序没有针对/ error的显式映射,因此您将其视为后备。

     

发生意外错误(类型=未找到,状态= 404)。   没有可用消息

3 个答案:

答案 0 :(得分:1)

我认为您必须将该位置添加到application.properties的静态文件夹中

spring.resources.static-locations=file:<location>

要访问该文件,请不要输入static-locations文件夹名称。如果它不在子文件夹中,则可以直接访问它。像这样

http://localhost:8080/filename.ext

答案 1 :(得分:0)

如果文件不在静态文件夹中,则无法访问它,否则,您需要指定确切的路径和文件名来访问它。

答案 2 :(得分:0)

因此,我一直在使用Spring Boot制作一个文件共享Web应用程序,这就是我为从数据库获取文件提供便利的方式。我将特别关注您的问题,因为它与我几天前面对的问题非常相似。

首先,我制作一个POJO类Files,其中包含诸如filenamelastmodified之类的详细信息,以及与您的问题无关的其他一些信息。

我使用DAO类从数据库中获取文件,将上述属性添加到ArrayList中,然后将ArrayList返回到Controller类。在Controller类中,使用request对象执行以下操作:request.setAttribute("files", files);

现在在我的jsp文件中,我使用JSTL来获取如下文件:

<c:forEach var="j" items="${files}">
    <td>
        <a href="resources/files/${j.getFilename()}" target="_blank" rel="noopener noreferrer">${j.getFile()}</a>
    </td>
</c:forEach>

resources/files/是我的文件在上传后存储的路径,使用target="_blank" rel="noopener noreferrer"可以使我以新的方式打开文件(可以打开浏览器的文件,例如pdf和文本文件)标签,无法打开的标签将自动下载。