861 Stimmen

Node.js-Schnell-Dateiserver (statische Dateien über HTTP)

Gibt es ein einsatzbereites Node.js-Tool (installiert mit npm ), die mir helfen würde, Ordnerinhalte als Dateiserver über HTTP zu veröffentlichen.

Beispiel: Wenn ich Folgendes habe

D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg

Dann ab D:\Folder\ node node-file-server.js Ich konnte auf die Datei über

http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg

Warum lässt mein Node Static File Server Anfragen fallen? Bezug auf einige mystische

Standard-Node.js-Server für statische Dateien

Wenn es ein solches Tool nicht gibt, welchen Rahmen sollte ich dann verwenden?

Verwandt: Grundlegender statischer Dateiserver in NodeJS

9voto

Ebrahim Byagowi Punkte 8964

ここ ist mein Ein-Datei/Leichtgewicht node.js statische Datei web-server pet Projekt ohne Abhängigkeiten, dass ich glaube, ist ein schnelles und reiches Werkzeug, das seine Verwendung ist so einfach wie die Ausgabe dieses Befehls auf Ihrem Linux/Unix/macOS Terminal (oder termux auf Android), wenn node.js (oder nodejs-legacy auf Debian/Ubuntu) installiert ist:

curl pad.js.org | node 

(für Windows-Benutzer gibt es andere Befehle in der Dokumentation)

Es unterstützt verschiedene Dinge, die meiner Meinung nach nützlich sein können,

  • Hierarchischer Verzeichnisindex erstellen/verwalten
    • Mit Sortiermöglichkeit nach den verschiedenen Kriterien
    • Hochladen aus dem Browser per [Multi-Datei]-Ziehen und Ablegen und Einfügen von Dateien/Texten sowie Einfügen von Bildschirmfotos aus der Zwischenablage in Chrome, Firefox und anderen Browsern mit einigen Einschränkungen (die über die Befehlszeilenoptionen deaktiviert werden können)
    • Schaltfläche zum Erstellen von Ordnern/Notizen/Hochladen
  • Servieren der korrekten MIMEs für bekannte Dateitypen (mit der Möglichkeit, dies zu deaktivieren)
  • Möglichkeit der Installation als npm-Paket und lokales Tool oder, einlineare Installation als permanenter Dienst mit Docker
  • HTTP 206 file serving (Multipart File Transfer) für schnellere Übertragungen
  • Uploads vom Terminal und von der Browserkonsole aus (eigentlich war es ursprünglich als Dateisystem-Proxy für die JS-Konsole von Browsern auf anderen Seiten/Domains gedacht)
  • CORS-Downloads/Uploads (die auch ausgeschaltet werden können)
  • Einfache HTTPS-Integration
  • Leichtgewichtige Kommandozeilenoptionen für eine bessere und sichere Bedienung:
    • Mit meinem Aufnäher node.js 8 können Sie ohne vorherige Installation auf die Optionen zugreifen: curl pad.js.org | node - -h
    • Oder installieren Sie es zunächst als systemglobales npm-Paket, indem Sie [sudo] npm install -g pad.js und verwenden Sie dann die installierte Version, um Zugang zu den Optionen zu erhalten: pad -h
    • Oder Sie verwenden das mitgelieferte Docker-Image, das standardmäßig relativ sichere Optionen verwendet. [sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js

Screenshot of a folder index using the tool

Die oben beschriebenen Funktionen sind größtenteils auf der Hauptseite des Tools dokumentiert http://pad.js.org die durch einen netten Trick, den ich verwendet habe, auch der Ort ist, von dem aus die Toolquelle selbst bedient wird!

Die Werkzeugquelle ist auf GitHub die sich über Ihr Feedback, Ihre Funktionswünsche und s!

9voto

Samrat Debroy Punkte 386

Es gibt noch einen anderen statischen Webserver, der ganz nett ist: browser-sync.

Es kann mit dem Node-Paketmanager heruntergeladen werden:

npm install -g browser-sync

Navigieren Sie nach der Installation in der cmd-Eingabeaufforderung zum Projektordner und führen Sie einfach Folgendes aus:

browser-sync start --server --port 3001 --files="./*"

Es beginnt mit dem Catering aller Dateien im aktuellen Ordner im Browser.

Weitere Informationen finden Sie unter BrowserSync

Danke.

8voto

Diego Mendes Punkte 9619

Sie können den NPM dienen Wenn Sie das NodeJS-Zeug nicht brauchen, ist es ein schnelles und einfaches Werkzeug:

1 - Installieren Sie das Paket auf Ihrem PC:

npm install -g serve

2 - Versorgen Sie Ihren statischen Ordner mit serve <path> :

d:> serve d:\StaticSite

Er zeigt Ihnen an, an welchem Port Ihr statischer Ordner bereitgestellt wird, navigieren Sie einfach zum Host wie:

http://localhost:3000

7voto

Das Folgende hat bei mir funktioniert:

Eine Datei erstellen app.js mit nachstehendem Inhalt:

// app.js

var fs = require('fs'),
    http = require('http');

http.createServer(function (req, res) {
  fs.readFile(__dirname + req.url, function (err,data) {
    if (err) {
      res.writeHead(404);
      res.end(JSON.stringify(err));
      return;
    }
    res.writeHead(200);
    res.end(data);
  });
}).listen(8080);

Eine Datei erstellen index.html mit nachstehendem Inhalt:

Hi

Starten Sie eine Befehlszeile:

cmd

Laufen Sie unten in cmd :

node app.js

Rufen Sie die folgende URL in Chrome auf:

http://localhost:8080/index.html

Das war's schon. Ich hoffe, das hilft.

Fuente: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/

7voto

FooBar Punkte 5084

Ich habe mit keiner der Antworten auf dieser Seite viel Glück gehabt, aber die unten stehende schien den Trick zu machen.

Hinzufügen einer server.js Datei mit dem folgenden Inhalt:

const express = require('express')
const path = require('path')
const port = process.env.PORT || 3000
const app = express()

// serve static assets normally
app.use(express.static(__dirname + '/dist'))

// handle every other route with index.html, which will contain
// a script tag to your application's JavaScript file(s).
app.get('*', function (request, response){
  response.sendFile(path.resolve(__dirname, 'dist', 'index.html'))
})

app.listen(port)
console.log("server started on port " + port)

Vergewissern Sie sich auch, dass Sie express . ausführen. yarn add express --save ou npm install express --save abhängig von Ihrer Einrichtung (ich kann empfehlen yarn es ist ziemlich schnell).

Sie können ändern dist in den jeweiligen Ordner, in dem Sie Ihre Inhalte bereitstellen. Für mein einfaches Projekt habe ich keine Inhalte aus einem Ordner bereitgestellt, also habe ich einfach die dist Dateiname.

Dann können Sie node server.js . Da ich mein Projekt auf einen Heroku-Server hochladen musste, musste ich Folgendes zu meinem Projekt hinzufügen package.json Datei:

  "scripts": {
    "start": "node server.js"
  }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X