Ich habe den Datei-Upload zu einer Phoenix App hinzugefügt und kann das hochgeladene Bild in der Entwicklung und auch in der Produktion lokal anzeigen, wenn die App in der Konsole gestartet wird.Das hochgeladene Bild kann nicht in der Produktion angezeigt werden
Mein spezifisches Problem ist, dass wenn ich ein Bild auf den Produktionsserver hochladen, die Dateien hochgeladen und in das richtige Verzeichnis kopiert werden, aber ich kann nicht über den Browser zugreifen.
Die Static-Stecker in meinem Endpoint sind wie folgt:
plug Plug.Static,
at: "/", from: :bookingmot, gzip: false,
only: ~w(css fonts images js html favicon.ico robots.txt)
plug Plug.Static, at: "/uploads", from: Upload.base_path, gzip: false
Der Upload-Modul alle Aufgaben für den Upload benötigt Griffe und base_path ist wie folgt definiert:
def base_path do
System.get_env("UPLOAD_PATH")
end
Das env var UPLOAD_PATH ist auf dem Server definiert als:
/home/[username]/www/phoenix/[app-name]/uploads
# to clarify, the contents of [app-name] are the results of
# tar xfz app-release.tar when deploying
Alle hochgeladenen Dateien werden in die kopiert über Verzeichnis fein, aber wenn ich dann folgendes in den Browser gebe ich bekomme nur Seite nicht gefunden zurückgegeben.
Die Entwicklungs-VM und der Produktionsserver sind beide Centos 7 und die Produktions-App befindet sich hinter Nginx.
Ich denke, das ist alles, aber ich bin glücklich, weitere Informationen zu liefern, wenn es hilft.
kompilieren bestätigen Sie, dass "Upload.base_path" tatsächlich den Pfad zurückgibt, den Sie erwarten, wenn Sie ihn aufrufen? Fügen Sie 'IO.inspect (Upload.base_path) 'vor' plug Plug.Static, unter: "/ uploads", hinzu: Upload.base_path, gzip: false' und überprüfen Sie die Ausgabe auf dem Produktionsserver. Beachten Sie, dass diese Zeile ausgeführt wird, wenn die App _compiled_ wird, nicht wenn sie ausgeführt wird. – Dogbert
Hi, ja das tut es, schon mal inspiziert. Upload.base_path wird auch für den Pfad verwendet, wenn die Datei nach dem Upload aus dem tmp-Ordner kopiert wird (um sicherzustellen, dass Lese- und Schreibpfad identisch sind) und die Datei an den richtigen Speicherort kopiert wird. Ich druckte auch den Pfad in der Ansicht, in der das Bild angezeigt werden soll, und es zeigt auf das richtige Verzeichnis. –
Ich entschuldige mich bei Dogbert, sogar in Kursivschrift, ich vermisste die Bedeutung der Verwendung des Wortes _compiled_, sorry. Dein Kommentar hätte mich in die richtige Richtung geführt, wenn ich es richtig gelesen hätte. –