Angular 2 / Angular 4 : 如何从本地系统位置访问文件?
Angular 2 / Angular 4 : How can I access file from the local system location?
我的系统中有一个 JSON 文件:
/etc/project/system.json
我正在尝试使用我的系统路径访问此文件,但它不起作用。但是,如果我将此文件放在我的应用程序的 src 中,它工作正常。
JSON 文件路径是“/etc/project/system.json”,我的应用程序路径是“/var/www/DemoProject”
那么如何从我的本地系统访问文件?
正如其他人所说,您的问题只能由您使用的服务器解决。您想要的通常是命名的静态文件服务。您可以在互联网上找到为您的服务器提供静态文件的具体说明。
但是,您可能会在某个时候构建 Angular 应用程序。您甚至可能正在使用 Webpack。
如果您使用Angular-cli 来构建您的应用程序,您可以使用以下配置将系统文件夹复制到您的资产下。如果您使用 Webpack,这也会在您每次请求时动态获取文件,而无需复制文件。阅读有关 webpack here 的内容。在您的 .angular-cli.json
文件中:
"assets": [
"assets", // These two are generally used in Angular projects
"favicon.ico", // ^^^^^^^^^
{
"glob": "system.json",
"input": "/etc/project/",
"output": "./<outputfolder>"
}
]
如果这样做,您可以使用 url http://yourdomain/<outputfolder>/system.json
访问该文件
如果您在 typescript 代码中使用此 json 文件,您还可以设置 typescript 路径映射配置来查找此文件。 Webpack 和 Angular-cli 也支持这种配置。在您的 tsconfig.json
文件中:
"paths": {
"system.json": [
"/etc/project/system.json"
]
}
然后您可以在打字稿中导入 json,例如:
import * as data from 'system.json';
您必须拥有此 json 文件的类型声明,因为打字稿无法自行解析 json 文件的类型。你可以阅读它 here。简而言之,将其放在项目根目录的 typings.d.ts
中:
declare module "*.json" {
[key: string]: any;
}
您可以阅读更多关于 typescript 路径解析的内容 here。
另一种选择可能是使用 Electron。
这里有教程:Angular 5 and Electron
然后您可以使用 angular 构建您的应用程序并使用电子 api 访问文件。
Electron 基本上只是将您的网络应用程序捆绑在一个自包含的 nodejs 环境中,您可以从 linux/mac-os 或 windows 运行 作为应用程序,通过 [=22= 进行系统访问] 就像一个普通的应用程序。
我的系统中有一个 JSON 文件:
/etc/project/system.json
我正在尝试使用我的系统路径访问此文件,但它不起作用。但是,如果我将此文件放在我的应用程序的 src 中,它工作正常。
JSON 文件路径是“/etc/project/system.json”,我的应用程序路径是“/var/www/DemoProject”
那么如何从我的本地系统访问文件?
正如其他人所说,您的问题只能由您使用的服务器解决。您想要的通常是命名的静态文件服务。您可以在互联网上找到为您的服务器提供静态文件的具体说明。
但是,您可能会在某个时候构建 Angular 应用程序。您甚至可能正在使用 Webpack。
如果您使用Angular-cli 来构建您的应用程序,您可以使用以下配置将系统文件夹复制到您的资产下。如果您使用 Webpack,这也会在您每次请求时动态获取文件,而无需复制文件。阅读有关 webpack here 的内容。在您的 .angular-cli.json
文件中:
"assets": [
"assets", // These two are generally used in Angular projects
"favicon.ico", // ^^^^^^^^^
{
"glob": "system.json",
"input": "/etc/project/",
"output": "./<outputfolder>"
}
]
如果这样做,您可以使用 url http://yourdomain/<outputfolder>/system.json
如果您在 typescript 代码中使用此 json 文件,您还可以设置 typescript 路径映射配置来查找此文件。 Webpack 和 Angular-cli 也支持这种配置。在您的 tsconfig.json
文件中:
"paths": {
"system.json": [
"/etc/project/system.json"
]
}
然后您可以在打字稿中导入 json,例如:
import * as data from 'system.json';
您必须拥有此 json 文件的类型声明,因为打字稿无法自行解析 json 文件的类型。你可以阅读它 here。简而言之,将其放在项目根目录的 typings.d.ts
中:
declare module "*.json" {
[key: string]: any;
}
您可以阅读更多关于 typescript 路径解析的内容 here。
另一种选择可能是使用 Electron。
这里有教程:Angular 5 and Electron
然后您可以使用 angular 构建您的应用程序并使用电子 api 访问文件。
Electron 基本上只是将您的网络应用程序捆绑在一个自包含的 nodejs 环境中,您可以从 linux/mac-os 或 windows 运行 作为应用程序,通过 [=22= 进行系统访问] 就像一个普通的应用程序。