webentwicklung-frage-antwort-db.com.de

Angular 2/Angular 4: Wie kann ich vom lokalen Systemstandort auf die Datei zugreifen?

Ich habe eine JSON-Datei an folgendem Ort in meinem System

/etc/project/system.json

Ich versuche, über meinen Systempfad auf diese Datei zuzugreifen, aber sie funktioniert nicht. Es funktioniert jedoch gut, wenn ich diese Datei in src in meine Anwendung stecke. 

JSON-Dateipfad ist "/etc/project/system.json" und mein Anwendungspfad ist "/ var/www/DemoProject"

Wie kann ich also von meinem lokalen System auf Dateien zugreifen?.

19
Pinank Lakhani

Wie bereits erwähnt, kann Ihr Problem nur von dem Server gelöst werden, den Sie verwenden. Was Sie möchten, wird im Allgemeinen als statische Dateidienste bezeichnet. Im Internet finden Sie spezifische Anweisungen zum statischen Dateiserver für Ihren Server.

Wahrscheinlich bauen Sie Ihre Angular-Anwendung jedoch irgendwann auf. Sie können sogar Webpack verwenden.

Wenn Sie Angular-cli zum Erstellen Ihrer App verwenden, können Sie mit Hilfe der folgenden Konfiguration den Systemordner unter Ihren Assets kopieren. Wenn Sie Webpack verwenden, wird die Datei auch bei jeder Anforderung dynamisch abgerufen, ohne die Datei zu kopieren. Lesen Sie mehr über das Webpack hier . In Ihrer .angular-cli.json-Datei:

"assets": [
  "assets",            // These two are generally used in Angular projects
  "favicon.ico",       // ^^^^^^^^^
  {
    "glob": "system.json",
    "input": "/etc/project/",
    "output": "./<outputfolder>"
  }
]

Wenn Sie dies tun, können Sie mit der URL http://yourdomain/<outputfolder>/system.json auf die Datei zugreifen.

Wenn Sie diese Json-Datei in Ihrem TypeScript-Code verwenden, können Sie auch die TypeScript-Pfadzuordnungskonfiguration festlegen, um diese Datei zu finden. Webpack und Angular-cli unterstützen diese Konfiguration ebenfalls. In Ihrer tsconfig.json-Datei:

"paths": {
  "system.json": [
    "/etc/project/system.json"
  ]
}

Dann können Sie den Json in TypeScript wie folgt importieren:

import * as data from 'system.json';

Sie müssen über eine Typdeklaration für diese Json-Datei verfügen, da TypeScript JSON-Datentypen nicht selbst auflösen kann. Sie können darüber lesen hier . Fassen Sie dies in typings.d.ts in Ihrer Projektwurzel ein:

declare module "*.json" {
    [key: string]: any;
}

Sie können mehr über TypeScript-Pfade erfahren, die hier auflösen.

13
Gökhan Kurt

JS, das im Browser ausgeführt wird, kann nicht auf lokale Dateien zugreifen, siehe: Zugriff auf lokale Dateien mit Javascript

Sie müssen den Benutzer bitten, eine Datei hochzuladen, um darauf zugreifen zu können. Siehe: Datei-Upload in Winkel 2?

0
Viktor

Eine andere Option könnte Electron sein.

Hier ist ein Tutorial: Angular 5 und Electron

Dann können Sie Ihre App mit eckig erstellen und mit der elektronischen API auf Dateien zugreifen. 

Grundsätzlich bündelt Electron Ihre Web-App lediglich in einer eigenständigen Node-Umgebung, die Sie von Linux/Mac-OS oder Windows als Anwendung ausführen können. Der Systemzugriff erfolgt über eine API wie eine normale Anwendung.

0
mauricio777