2012-02-14 6 views
0

Это документ о том, как загрузить файл в play2: https://github.com/playframework/Play20/wiki/ScalaFileUploadМы не можем использовать способ play1 для загрузки файла в игру 2.0?

Но у меня есть еще один вопрос: не можем ли мы использовать путь 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. 

ответ

1

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

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