0

这是如何在 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.
4

2 回答 2

1

文件在 HTTP 请求正文中传递,但在 Play 2 中,动作的参数只能绑定到 URL 路径或查询字符串 [1]。您需要在您的操作正文中从请求正文中检索上传的文件,如文档 [2] 中所述。

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

于 2012-02-14T16:37:33.773 回答
0

以下是 Java 开发人员的文档:

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

于 2012-03-01T04:52:37.840 回答