Question

J'ai une application Web de Play 2.0 écrite à Scala.J'ai généré un fichier de guerre en utilisant le plug-in Jouer War et déployé sur Tomcat 7.0.27.

Lorsque je soumets un formulaire avec ENCTYPE="Multipart / Form-Data", la demande tombe sur.L'erreur semble être avec le cadre de lecture ne trouverait pas une "limite" aux données.

J'ai déjà essayé de mettre allowcasealmultipartparsing="vrai" mais ça n'aide pas

Le même code fonctionne bien sur le serveur de lecture.Qu'est-ce que je manque sur tomcat?Existe-t-il une configuration spécifique qui permet / supprime la multipart?

Le code de formulaire correspondant est:

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

Le code du contrôleur ressemble à:

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

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

Même si je ne télécharge pas de fichier, je reçois toujours un BADEQUEST - Dump comme suit:

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] 

Était-ce utile?

La solution

Le problème était que si vous utilisez "demande.body.asmultiparformdata" Comme je l'utilisais dans mon code, cela fonctionne avec jeu mais ne pas sur Tomcat.Cependant, si vous utilisez le «parse.multiparformdata» Bodyparser, cela fonctionne.Je ne sais pas pourquoi, mais Cela fait Alors maintenant, ma méthode ressemble à:

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

J'ai ajouté une méthode pour le trait sécurisé:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top