目前我正在使用Luminus + h2框架构建一个Clojure数据库支持的网站。我目前正在处理文件上传,并卡在实际检索文件的点上。虽然我不完全确定这是处理这种情况的最佳方法,但是至今为止,以下是我所做的事情:
我有一个路由允许我上传文件。上传的文件被复制到我的项目内/resources/public/Files文件夹中:
(io/copy actual-file (io/file "resources" "public" "Files" file-name))
此外,我将每个文件的文件名存储在一个数据库表中,该表使用SQL进行创建和操作。
然后,我有一个新的路由,显示已上传的所有文件的链接(通过访问数据库)。在后端,这些链接将页面导向一个名为“/file/:file-name”的新路由,在其中调用了文件响应函数。我希望这些链接能够作为文件的“下载”功能。
作为我的首次尝试,我将所有文件复制到了我的C:/AllFiles文件夹中,并执行了以下操作:
(defn serve-file [file-name]
(file-response (str (files-path) File/separator file-name)))
文件路径为:
(defn files-path [] "/AllFiles")
这对我很有帮助。但是,我想使用的文件应该来自我的特定项目目录内部,而不需要我输入整个路径(即使它在~/Project-Name/resources/public/Files中,也能为任何人使用)。但出于某种原因,我似乎无法让文件响应像这样工作。感谢您的帮助。