我有一个Java Spring Boot应用程序,该应用程序具有将文件保存在“ src / main / resources / public / myFiles”路径中的功能。现在,我想访问文件,并且尝试通过键入“ http://localhost:8080/public/myFiles”来访问文件,并且在下面出现错误提示。
Whitelabel错误页面 此应用程序没有针对/ error的显式映射,因此您将其视为后备。
发生意外错误(类型=未找到,状态= 404)。 没有可用消息
答案 0 :(得分:1)
我认为您必须将该位置添加到application.properties的静态文件夹中
spring.resources.static-locations=file:<location>
要访问该文件,请不要输入static-locations
文件夹名称。如果它不在子文件夹中,则可以直接访问它。像这样
答案 1 :(得分:0)
如果文件不在静态文件夹中,则无法访问它,否则,您需要指定确切的路径和文件名来访问它。
答案 2 :(得分:0)
因此,我一直在使用Spring Boot制作一个文件共享Web应用程序,这就是我为从数据库获取文件提供便利的方式。我将特别关注您的问题,因为它与我几天前面对的问题非常相似。
首先,我制作一个POJO类Files
,其中包含诸如filename
,lastmodified
之类的详细信息,以及与您的问题无关的其他一些信息。
我使用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和文本文件)标签,无法打开的标签将自动下载。