Als Erstes müssen Sie verstehen, dass node.js standardmäßig keine Dateien bereitstellt. Daher müssen Sie jede einzelne Anforderung entweder manuell codieren, sodass die Anforderung /foo
Inhalt aus einer bestimmten Datei oder einem bestimmten Code generiert. Oder Sie müssen eine Reihe von Zuordnungen erstellen, wobei /content/foo
Ihrem Server mitteilt, dass er ein entsprechendes Verzeichnis auf Ihrem Server lesen soll, z. B. /myservercontent/foo
.
Und es gibt verschiedene Tools, die Ihnen helfen, diese Zuordnung für ganze Verzeichnishierarchien von Dateien (z. B. express.static()
) zu erstellen. Aber jede Zuordnung wie diese hat eine explizite Wurzel, bei der alle Anfragen relativ zu einer Wurzel sind. Sie können festlegen, wo dieser Root auf Ihrem Server sein soll. Es kann sogar das Root-Verzeichnis Ihres Servers sein (obwohl das aus verschiedenen Gründen nie empfohlen wird). Normalerweise wird dieser Stamm auf ein übergeordnetes Verzeichnis auf Ihrer Festplatte gesetzt, das NUR öffentlichen Webinhalt unterhalb dieses übergeordneten Verzeichnisses enthält. Dies ist so, dass Sie NIEMALS eine Situation schaffen, in der ein beliebiger Web-Benutzer Zugang zu Dateien auf Ihrem System erhalten kann, die Sie nicht öffentlich haben möchten (wie Ihre HTTP-Zertifikate, Datenbanken, Server-Code, Passwort-Dateien usw.) .
Alles in allem, node.js erlaubt Ihnen, so ziemlich alles zu tun, was Sie wollen. Wenn Sie Zugriff auf eine zufällige Datei auf Ihrer Festplatte an einem beliebigen Ort geben möchten (etwas, das ich nie empfehlen würde), können Sie einfach node.js codieren, um das zu tun. Es gibt mehrere Möglichkeiten, dies zu erreichen. Eine einfache wäre, eine Route zu konstruieren, die einen Abfrageparameter akzeptiert, wobei der Abfrageparameter den Pfad zu der gewünschten Datei angibt und dann diese Routenkennung diese Datei lesen und zurückgeben lässt. Dies ist eine klaffende Sicherheitslücke, die groß genug ist, um einen Lastwagen durchzufahren, also würde ich das niemals empfehlen.
Stattdessen sollten Sie alle Dateien, die Sie über Ihren Server zur Verfügung stellen möchten, in einer sicheren Verzeichnishierarchie sammeln und dann den Zugriff auf Dateien in dieser bestimmten Verzeichnishierarchie zulassen auf deiner Festplatte.
Nachdem Sie nun ein wenig mehr über haben erklärt, was Sie tun, ist hier eine Idee:
Scan der lokalen Festplatte alle Audiodateien zu identifizieren, die Sie denken, sind sicher Aktie. Sei sehr, sehr vorsichtig, was du teilen willst, da Fehler hier große Sicherheitslöcher öffnen können. Sie müssen die Sicherheitsrisiken von dem, was Sie hier tun, bewerten, da wir den vollen Kontext nicht verstehen.
Wenn Sie diese Liste von Audiodateien sammeln, speichern Sie die Liste in einer Art von Datenspeicher, den Ihr Server verwendet, damit Sie zu einem späteren Zeitpunkt schnell auf die Liste zugreifen können. Ich schlage vor, dass Sie für jede Audiodatei eine eindeutige ID erstellen, auf die Sie in Zukunft leichter zugreifen können.
Sie können Ihrem Remote-Benutzer dann eine Liste dieser Audiodateien anbieten, und sie können eine auswählen.Die ausgewählte Audiodatei kann dann als Teil einer Anforderung zum Abspielen einer bestimmten Audiodatei an den Server gesendet werden. Ich würde vorschlagen, dass Dateien nur per ID angefordert werden sollten (aus Sicherheitsgründen), obwohl Ihre Benutzerschnittstelle möglicherweise den ursprünglichen Pfadnamen anzeigt, wenn dies wichtig oder relevant ist.
Wenn Ihr Server eine Anforderung zum Abspielen einer Audiodatei mit einer bestimmten ID empfängt, kann er in dessen Datenspeicher nachlesen, welche Audiodatei die mit der spezifischen ID ist. Dies ist ein wichtiger Schritt, da der Client gezwungen ist, die Datei nach ID (nicht nach Pfad) anzufordern, sodass der Client nur Audiodateien anfordern kann, die zuvor gescannt wurden und deren Veröffentlichung für sicher erachtet wurde. Es gibt keine Sicherheitslücken, bei denen ein Remote-Client eine andere Datei anfordern könnte, die Sie nicht freigeben möchten.
Sobald Ihr Server im Datenspeicher nach der Audiodatei mit dieser bestimmten ID sucht, kann er den lokalen Pfad aus dem Datenspeicher abrufen und die Audiodatei lesen und an die Gegenstelle senden/streamen Klient.
Als Beispiel in Schritt 3 und 4, dann kann Client eine URL senden, die wie folgt aussieht:
http://someserver/play/5934902
, dass eine Anfrage würde die Audiodatei abzuspielen mit einer ID von 5934902
. Ihr Server hätte dann einen Routen-Handler für /play/:id
, der die ID verwenden würde, um dann die Schritte 4 und 5 auszuführen.
Es gibt zu wenig Informationen darüber, wie Ihre Anwendung jetzt geschrieben ist, um antworten zu können. Könnten Sie etwas vorhandenen Code teilen? –
Uhm, welchen Code muss ich teilen? Ich meine, ich kann nicht alles posten, aber ich kann posten, wenn es etwas Bestimmtes gibt. Ich habe versucht, es so gut wie möglich zu erklären. –