Мы не можем использовать способ play1 для загрузки файла в play 2.0? - PullRequest
0 голосов
/ 14 февраля 2012

Это документ о том, как загрузить файл в play2: https://github.com/playframework/Play20/wiki/ScalaFileUpload

Но у меня есть еще один вопрос: мы не можем больше использовать путь play1?

В play1,Я могу загрузить файл следующим образом:

routes
--------
post    /upload         Application.upload

Application.java
----------------
public static void upload(File file) { ... }

Действие upload автоматически получит загруженный файл.

Но как сделать то же самое в play2?

Я попытался:

routes:
--------
POST   /upload         controllers.Application.upload

Application.scala
-----------------
def upload(file: File) = Action { ...}

Но он не может скомпилироваться, сообщение об ошибке:

not enough arguments for method upload: (file: java.io.File)

Затем я добавляю параметр в маршруты:

POST   /upload         controllers.Application.upload(file: java.io.File)

Он по-прежнему сообщает об ошибке:

No QueryString binder found for type java.io.File. Try to implement an implicit QueryStringBindable for this type.

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Файлы передаются в теле HTTP-запросов, но в Play 2 параметры действия могут быть привязаны только к URL-пути или строке запроса [1].Вам нужно извлечь загруженные файлы из тела запроса, в теле действия, как описано в документации [2].

[1] https://github.com/playframework/Play20/wiki/ScalaRouting
[2] https://github.com/playframework/Play20/wiki/ScalaFileUpload

0 голосов
/ 01 марта 2012

Вот документация для разработчиков Java:

https://github.com/playframework/Play20/wiki/JavaFileUpload

...