2012-05-21 6 views
2

나는 Scala로 작성된 Play 2.0 웹 애플리케이션을 가지고있다. 플레이 전쟁 플러그인을 사용하여 WAR 파일을 생성하고 톰캣 7.0.27에 배포했습니다.Tomcat 7 Multipart formdata

enctype = "multipart/form-data"인 양식을 제출하면 요청이 넘어집니다. 오류는 플레이 프레임 워크가 데이터에 '경계'를 찾지 못하는 것 같습니다.

이미 allowCasualMultipartParsing이 = "true"를 넣어 시도했지만이

동일한 코드가 플레이 서버에서 잘 작동 도움이되지 않습니다. 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> 

컨트롤러 코드는 다음과 같습니다 나는, 나는 여전히 BadRequest을받을 파일을 업로드하지 않는 경우에도

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

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

- 다음과 덤프 같이

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] 
+0

오류 시나리오 – UVM

+0

@UnniVMana을 붙여주십시오 :

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

내가 보안 특성에 대한 방법을 추가했습니다 : 이유를 알고 있지만, 하지 마십시오 그것은 은 그래서 지금, 내 방법은 같습니다 않습니다 덧붙였다. – aishwarya

답변

0

"request.body.asMultipartFormData"를 다음과 같이 사용하는 경우 문제가 발생했습니다. 내 코드에서 사용 중이므로 이 작동하지만 바람둥이에는 작동하지 않습니다. 그러나 'parse.multipartFormData'BodyParser를 사용하면 작동합니다. ,

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