【问题标题】:can't access localhost:8080 public folder from browser (java spring boot)无法从浏览器访问 localhost:8080 公用文件夹(java spring boot)
【发布时间】:2020-02-15 06:40:36
【问题描述】:

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

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

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

【问题讨论】:

  • 访问这些文件的目的是什么?您打算在新标签页中打开它们还是下载它们?
  • 是的,我提供了一个 Angular 用户界面来下载该文件。
  • 你能提供代码吗?所以我直接更新了

标签: java spring-boot


【解决方案1】:

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

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

而且要访问该文件,不要提供static-locations 文件夹名称。如果它不在子文件夹中,您可以直接访问它。像这样

http://localhost:8080/filename.ext

【讨论】:

    【解决方案2】:

    如果文件不在您的静态文件夹位置,您将无法访问该文件,否则您需要指定准确的路径和文件名才能访问它。

    【讨论】:

    • 我什至在发布这个问题之前尝试过,它也没有用
    【解决方案3】:

    所以我一直在使用 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 和文本文件)以及那些打不开自动下载。

    【讨论】:

    • 感谢您的回复,但我使用的是 spring boot rest,我没有使用 jsp。
    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多