2015-05-14 4 views
0

Мои пользователи должны скачать файл при попадании на определенный контроллер в моем приложении Play. Я думал, что это будет делать трюк:Play Framework - только получение содержимого файла из файла Ok.sendFile (файл)

def downloadFile = Action { 
    Ok.sendFile(new File("example.zip")) 
} 

Но это, кажется, только дать фактическое содержимое файла вместо загрузки файла. Может ли кто-нибудь сказать мне, что я делаю неправильно?

Благодаря

ответ

0

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

0

Попробуйте вместо этого:

def index = Action { 
    Ok.sendFile(
    content = new java.io.File("/tmp/fileToServe.pdf"), 
    fileName = _ => "termsOfService.pdf" 
) 
} 

Его из самой документации.

Теперь вам не нужно указать имя файла, так как веб-браузер не пытаться загрузить его, но будет просто отображать содержимое файла в окне веб-браузера. Это полезно для поддерживаемых типов контента из веб-браузера, например текста, HTML или изображений.

Смотреть это: https://www.playframework.com/documentation/2.0/ScalaStream

+0

Спасибо за ваш ответ. Оказывается, моя проблема заключалась в том, что клиент REST, который я использую, пытался быть слишком умным. Если я ударил его напрямую, он загрузил файл, клиент REST отобразил содержимое файла вместо того, чтобы позволить мне загрузить его. – user1237032

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