我想使用Play应用程序/ api将JSON文件的内容上传到我的数据库。
我的HTML视图如下所示:
@main("Welcome to Play") {
<h1> Upload a JSON file </h1>
@helper.form(action = routes.Application.upload, 'enctype -> "text/json") {
<input type="file" name="jsonFile">
<p>
<input type="submit" value="Upload">
</p>
}
}
我在控制器中定义了我的上传方法。理想情况下,我想将内容上传到Cassandra,但首先我必须访问文件本身的内容。
def upload = Action { request =>
val data = request.body.asJson / toString
Ok("Got: " + data)
}
我分别得到(asJson
或toString)
Got: None / Got: AnyContentAsFormUrlEncoded(Map(jsonFile -> ArrayBuffer(file.json)))
我file.json
的格式为:
[{ "name": "alice", "age": 22}, { "name": "bob", "age": 23}]
我已经验证它在JSON lint中格式正确。基本上我似乎无法从文件中正确提取内容。
答案 0 :(得分:2)
这是因为您没有使用Content-Type
application/json
进行请求,因此请求body / payload不是JSON。您实际上是在使用multipart/form-data
Content-Type
进行文件上传(这不是文件上传,因为您没有使用application/x-www-form-urlencoded
)(您可以通过使用浏览器检查员)。
以下是您需要做的事情: