gpt4 book ai didi

java - Tomcat 7 多部分表单数据

转载 作者:行者123 更新时间:2023-11-29 09:13:54 24 4
gpt4 key购买 nike

我有一个用 Scala 编写的 Play 2.0 网络应用程序。我已经使用 play war 插件生成了一个 WAR 文件并部署在 tomcat 7.0.27 上。

当我提交带有 enctype="multipart/form-data"的表单时,请求失败了。错误似乎是 Play Framework 没有找到数据的“边界”。

我已经尝试过设置 allowCasualMultipartParsing="true"但它没有帮助

相同的代码在 Play 服务器上运行良好。我在 Tomcat 上缺少什么?是否有启用/抑制多部分的特定配置?

相关表单代码为:

<form method="POST" action="/create" id="myform" class="form-horizontal" enctype="multipart/form-data"> 
<input type="file" name="logo" id="logo" placeholder="Logo Image" class="input-xlarge" />
<input type="submit" value="Save Details" class="btn btn-info"/>
</form>

Controller 代码如下:

val hash_string = "xxxxxxxxxxxx"
var logoFile: String = null

request.body.asMultipartFormData.map { x => x.file("logo").map { logo => logoFile = uploadFile(hash_string, logo) } }

即使我不上传文件,我仍然会收到 BadRequest - 转储如下:

Map(HOST -> non-empty iterator, ACCEPT-ENCODING -> non-empty iterator, 
ACCEPT-LANGUAGE -> non-empty iterator, REFERER -> non-empty iterator,
CONTENT-LENGTH -> non-empty iterator, ORIGIN -> non-empty iterator,
ACCEPT-CHARSET -> non-empty iterator, CONNECTION -> non-empty
iterator, CONTENT-TYPE -> empty iterator, CACHE-CONTROL -> non-empty
iterator, ACCEPT -> non-empty iterator, COOKIE -> empty iterator, USER-
AGENT -> non-empty iterator) Map(utmc -> Cookie(utmc,
84437902,-1,/,None,false,false), utmz -> Cookie(utmz,
84437902.1337318013.1.1.utmcsr,-1,/,None,false,false), PLAYSESSION ->
Cookie(PLAY_SESSION,11cd5ffd7e2b56910a6a118e0de60be50c963697-email
%3Axxxxxxxxxxx,-1,/,None,false,false), __utma -> Cookie(utma,
84437902.1740292094.1337318013.1337510573.1337583859.6,-1,/,None,false,fals e),
__utmb -> Cookie(_utmb,
84437902.2.10.1337583859,-1,/,None,false,false))' [Missing boundary
header]

最佳答案

问题是如果你使用我在代码中使用的“request.body.asMultipartFormData”有效玩,但不在 tomcat 上。但是,如果您使用'parse.multipartFormData' BodyParser,有效。不知道为什么,但是它确实所以现在,我的方法看起来像:

def create = IsMultipartAuthenticated(parse.multipartFormData) { user 
=> implicit request =>
...
request.body.file("logo").map { logo => ... }
...
Ok
}

我已经为 Secured trait 添加了一个方法:

def IsMultipartAuthenticated(p: BodyParser[MultipartFormData[TemporaryFile]])(f: => String => 
Request[MultipartFormData[TemporaryFile]] => Result) =
Security.Authenticated(username, onUnauthorized) { user =>
Action(p)(request => f(user)(request))
}

关于java - Tomcat 7 多部分表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10683552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com