Express 能够在不同的虚拟位置提供静态文件:
app.use('/static', express.static('public'))
但是,我在使用 Spark Java 的服务器上使用 Java。我知道如何提供静态文件,但 Spark Java 是否可以在虚拟位置提供静态文件?如果可能,如何?我已经搜索了一段时间,但我找到的所有教程都只是告诉我如何提供静态文件,而不是在虚拟位置提供静态文件。
编辑:“虚拟位置”的解释:假设这是当前目录:
public/
|-----index.html
|-----style.css
|-----etc...
然后,我们可以得到一个网页,http://localhost:8080/public/index.html
但是,我想改变它,这样我就可以得到网页
http://localhost:8080/somedir/virtual/pathindex.html
使用 Spark-Java 时,Spark
该类包含staticFiles
静态导入,它提供了一组静态文件实用程序方法。
其中之一是externalLocation(String externalFolder)
。
因此,例如,你可以定义 Spark 应用程序,并在init()
方法中定义外部位置:
Spark.staticFiles.externalLocation("[your external path here]");
此位置可以在应用程序的类路径之外。
这在此处记录。
关于“虚拟”位置:“虚拟”一词表示一个目录,它只是一个 Linux 风格的符号链接或指向文件系统上其他位置的指针。只要你的应用程序有权访问符号链接/指针的目标,这应该可以正常工作。
(我没有用 Windows 快捷方式尝试过这个 - 这些可能不起作用。)
请注意:如果你将外部位置定义为:
staticFiles.externalLocation("public");
那么你将无法访问以下资源:
http://localhost:8080/public/index.html
相反,你将需要使用:
http://localhost:8080/index.html
在这种情况下,public
是起点。如果要明确包含public
在 URL 中,则需要添加一个名为 的子目录public
:
public/
|----public/
|-----index.html
|-----style.css
|-----etc...
现在这将起作用,正如你在问题中所说的那样:
http://localhost:8080/public/index.html
所以,不幸的是,我想没有办法务实地做到这一点,你必须使用符号链接。没关系,谢谢!
感谢您的反馈。只是为了澄清 - 您的意思是“以编程方式进行”吗?换句话说,您要在应用程序启动后动态更改位置
public
?如果这是目标,那么您是对的,没有办法做到这一点。一旦定义了静态文件位置,就不能在应用程序运行时更改它。如果我误解了您的评论,请纠正我。是的,你是对的