2013-08-12 11 views
5

Also habe ich recherchiert und herausgefunden, dass der Production-Modus von Play im Umgang mit assets ein anderes Verhalten hat als im Modus Development.Spielen! Framework: Im Produktionsmodus nicht zugängliche Assets

Ich habe eine Website, wo der Benutzer ein Bild hochlädt und das Bild sofort nach dem Hochladen auf der Seite angezeigt wird. Im Entwicklungsmodus wird das Bild fein angezeigt. Im Produktionsmodus konnte das Bild jedoch nicht gefunden werden. Ich verstehe, dass im Produktionsmodus der Code die neue geschriebene Datei nicht erkannt hat.

Ein Benutzer mit einem ähnlichen Problem schrieb eine Lösung, aber es ist in Scala. Ich schreibe in Java und weiß nicht genau, was die Lösung dieses Benutzers tut: Play! Framework: File not served after upload until play clean

Es scheint, als ob diese Lösung die Datei als Download dient? Denn wenn es so ist, ist es nicht das, was ich brauche. Ich möchte auf die Datei zugreifen es html wie dies mit angezeigt werden:

<img src='@routes.Assets.at("images/fileName")'></img> 

Was kann ich in Production Modus neu hochgeladene Asset-Datei zugreifen?

+2

diese Diskussion Siehe: https://groups.google.com/d/msg/play- framework/iHwp1FIjZbw/UaRq_3NTpLoJ –

+0

Vielen Dank für diesen Link. Ich habe viel recherchiert und bin nicht darauf gestoßen. Die Antwort von James Roper fasst die Beschränkungen des Vermögensverwalters ziemlich genau zusammen. – cYn

Antwort

1

So herauszufinden, dass Sie neu hinzugefügte Dateien nicht liefern können, nachdem Play den Code kompiliert hat, ist die nächste beste Option, einen Front-End-HTTP-Server zu verwenden, wie viele vorgeschlagen haben. Ich endete mit nginx. Da ich nur nginx verwende, um Dateien und nichts anderes zu liefern, werde ich die Schritte posten, die ich unternommen habe, um dies zum Laufen zu bringen.

ich Mac bin mit so installiert ich Homebrew von $ brew install wget im Terminal aufrufen. Homebrew ist gut, weil Sie nginx einfach durch Aufruf $ brew install nginx

Ich habe diese Website installieren können, um mich zu führen durch, wie nginx config-Datei zu ändern: http://learnaholic.me/2012/10/10/installing-nginx-in-mac-os-x-mountain-lion/

Dann einfach ändern ich die Config-Datei von

location/{ 
    root html; 
    index index.html index.htm; 
} 

zu

location/{ 
     root /Users/myName/playProject/public; 
    } 

wo public im Play-Projekt auf den Ordner verweist. Ich habe es so gemacht, dass ich meinen Code nicht neu anordnen muss. So, jetzt statt

<img src='@routes.Assets.at("images/fileName")'></img> 

Ich benutze

<img src='http://localhost:8080/images/fileName'></img> 

Wo Port 8080 ist mein nginx Server

Verwandte Themen