2013-08-12 2 views
5

Итак, я исследовал и выяснил, что режим игры Production имеет другое поведение при работе с assets, чем в режиме Development.Играть! Рамка: Активы, недоступные в режиме производства

У меня есть сайт, на котором пользователь загружает изображение, и изображение сразу отображается на странице после загрузки. В режиме разработки изображение отображается нормально. Но в режиме производства изображение невозможно найти. Я понимаю, что в режиме производства код не распознал новый файл.

Пользователь с аналогичной проблемой написал решение, но находится в Scala. Я пишу на Java и не знаю точно, что делает это пользовательское решение: Play! Framework: File not served after upload until play clean

Кажется, что это решение служит файлу для загрузки? Потому что, если это так, это не то, что мне нужно. Я хочу, чтобы получить доступ к файлу, чтобы отобразить его с помощью HTML, как это:

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

Что я могу сделать, чтобы получить доступ к новым закачанный файл активов в режиме Production?

+2

Смотрите эту дискуссию: https://groups.google.com/d/msg/play- framework/iHwp1FIjZbw/UaRq_3NTpLoJ –

+0

Благодарим вас за эту ссылку. Я много исследовал и не сталкивался с этим. Ответ Джеймса Ропера в значительной степени подводит итог ограничениям контроллера активов. – cYn

ответ

1

Итак, выяснилось, что после того, как Play компилирует код, вы не можете обслуживать новые файлы, следующий лучший вариант - использовать интерфейсный HTTP-сервер, как это было предложено многими. Я закончил использование nginx. Поскольку я использую nginx для работы с файлами, и ничего больше, я отправлю шаги, которые я предпринял, чтобы заставить это работать.

Я использую Mac, поэтому я установил Homebrew, позвонив по телефону $ brew install wget в терминал. Homebrew это хорошо, потому что вы можете установить Nginx просто вызвав $ brew install nginx

Я использовал этот сайт, чтобы вести меня через о том, как изменить файл конфигурации Nginx в: http://learnaholic.me/2012/10/10/installing-nginx-in-mac-os-x-mountain-lion/

Тогда я просто изменить конфигурационный файл из

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

к

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

где public относится к папке, в проекте Play. Я сделал это так, чтобы мне не пришлось менять код. Так что теперь вместо

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

Я использую

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

Где порт 8080 мой Nginx сервер

Смежные вопросы