2013-08-12 16 views
5

Così ho studiato e scoperto che la modalità Production di Play ha un comportamento diverso quando si ha a che fare con assets rispetto alla modalità Development.Gioca! Framework: risorse non accessibili in modalità di produzione

Ho un sito in cui l'utente carica un'immagine e l'immagine viene visualizzata immediatamente sulla pagina dopo il caricamento. Nella modalità di sviluppo, l'immagine viene visualizzata correttamente. Ma in modalità produzione, l'immagine non è stata trovata. Capisco che in modalità produzione, il codice non riconosce il nuovo file scritto.

Un utente con un problema simile ha scritto una soluzione ma è in Scala. Sto scrivendo in Java e non so esattamente cosa stia facendo questa soluzione: Play! Framework: File not served after upload until play clean

Sembra che questa soluzione serva il file come download? Perché se lo è, non è ciò di cui ho bisogno. Voglio accedere al file per visualizzarlo utilizzando HTML come questo:

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

Cosa posso fare per accedere al file di asset appena caricato in modalità Production?

+2

Vedere questa discussione: https://groups.google.com/d/msg/play- framework/iHwp1FIjZbw/UaRq_3NTpLoJ –

+0

Grazie per questo link. Ho fatto molte ricerche e non mi sono imbattuto in questo. La risposta di James Roper riassume piuttosto i limiti del controller delle risorse. – cYn

risposta

1

Quindi, scoprendo che non è possibile servire i nuovi file aggiunti dopo che Play ha compilato il codice, l'opzione migliore è utilizzare un server HTTP front-end come molti hanno suggerito. Ho finito per usare nginx. Dal momento che sto usando solo nginx per servire i file e nient'altro, pubblicherò i passaggi che ho preso per farlo funzionare.

Sto usando Mac così ho installato Homebrew chiamando $ brew install wget nel terminale. Homebrew è un bene perché è possibile installare nginx semplicemente chiamando $ brew install nginx

ho usato questo sito che mi guidasse attraverso su come modificare il file di configurazione di nginx: http://learnaholic.me/2012/10/10/installing-nginx-in-mac-os-x-mountain-lion/

Poi ho semplicemente modifico il file di configurazione da

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

a

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

dove public si riferisce alla cartella del progetto Play. L'ho fatto in questo modo in modo da non dover riorganizzare il mio codice. Così ora invece di

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

Io uso

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

Dove porta 8080 è il mio server nginx

Problemi correlati