如何通过路由在Angular中托管文件?

时间:2020-08-05 01:29:23

标签: angular routes

让我说我有一个要保存在我的有角网站(v7)上的pdf文件。我将它放在我的wwwroot文件夹中,当尝试通过角度路由将其路由到该文件夹​​和文件时,我收到一条错误消息,指出该路由不存在

例如 文件位于HPPH$PH <- gsub("' ", ".", HPPH$PH)中 我的路线有路径,可以说wwwroot/sub/file.pdf。这将是我的网站/files/file.pdf

上的终结点
www.example.com/files/file.pdf

我已经测试了我的路径并重定向到一个组件,效果很好。

该组件位于应用文件夹tho中,该文件夹与wwwroot文件夹完全分开。我不在乎文件的位置,如果需要的话,我会将其移动到应用程序文件夹中,但是我已经尝试过了,而且似乎也无法使其正常工作。

由于wwwroot和app文件夹是2个单独的文件夹,所以我不知道如何从wwwroot进入app。我的第一个想法是从wwwroot又名const routes: Routes = [ { path: 'files/file.pdf', //this is when a user types www.example.com/files/file.pdf redirectTo: '/sub/file.pdf' //this is where the file is stored in wwwroot } ]; 升至www.example.com,然后进入../,这当然也行不通,我不认为您可以在wwwroot文件夹中浏览这种结构。

如何从我的角度站点的wwwroot文件夹(或其他任何位置)中提供此文件?

谢谢

1 个答案:

答案 0 :(得分:0)

在angular.json文件中修改项目的assets配置,以便在应用程序部署中包括静态文件。请参阅https://angular.io/guide/workspace-config#assets-configuration上的文档,以通过全局模式包含文件。

在您的情况下,配置可能如下所示:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "app": {
      ...
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            ...
            "assets": [
              ...
              './files/**/*'
            ]
          }
        }
      }
    }
  }
}

然后,链接到该文件,就像从网站的根目录<a href="/files/file.pdf">Download</a>下载文件一样。