SvelteKit如何从assets文件夹下载文件?
在SvelteKit中从assets文件夹下载文件的正确方法
你的问题出在资源路径的引用方式上,以下是两种可行的解决方案:
方案1:使用绝对路径引用
将href改为以/开头的绝对路径,确保无论当前页面处于哪个路由层级,都能正确定位到assets目录下的文件。同时可以移除target="_blank",因为download属性会直接触发下载行为,无需新开窗口:
<a download="my-file.pdf" href="/assets/my-file.pdf"> Download </a>
方案2:使用SvelteKit的资源导入(推荐)
通过$assets别名导入文件,SvelteKit会自动处理资源的哈希命名,优化缓存策略:
<script> import myFile from '$assets/my-file.pdf'; </script> <a download="my-file.pdf" href={myFile}> Download </a>
原代码失效原因
你之前使用的相对路径assets/my-file.pdf是基于当前页面URL的相对路径,如果页面处于子路由(比如/about),实际请求的路径会变成/about/assets/my-file.pdf,而该路径下不存在目标文件,因此触发"File wasn't available on site"错误。
内容的提问来源于stack exchange,提问作者Valentin Vignal
相关产品推荐
相关产品推荐

