문제

스칼라로 작성된 Play 2.0 웹 응용 프로그램이 있습니다.나는 재생 전쟁 플러그인을 사용하여 WAR 파일을 생성하고 Tomcat 7.0.27에 배포했습니다.

enctype="multipart / form-data"가있는 양식을 제출하면 요청이 넘어갑니다.이 오류는 데이터에 대한 '경계'를 찾지 못하는 Play 프레임 워크와 함께있는 것으로 보입니다.

이미 AllowCaualMultipArtParsing="True"를 넣었지만 도움이되지는 않습니다

동일한 코드가 재생 서버에서 잘 작동합니다.나는 톰캣에 뭐가 누락 되었는가?다중을 사용하거나 억압 할 수있는 특정 구성이 있습니까?

관련 양식 코드는 다음과 같습니다.

<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>
.

컨트롤러 코드는 다음과 같습니다.

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 
} 
.

나는 확보 된 특성에 대한 방법을 추가했다 :

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top