2016-08-29 2 views
2

Ich habe Dateidownload in meinem Projekt in Spring MVC implmented und beim Herunterladen der Datei es mir auf tomcat 7-Server unter Fehler gibt:HeadersTooLargeException - Response-Header

org.apache.coyote.http11.HeadersTooLargeException: An attempt was made to write more data to the response headers than there was room available in the buffer. 
Increase maxHttpHeaderSize on the connector or write less data into the response headers. 

Ich habe auch die Kopfgröße versucht Erhöhung unter Verwendung von Code in server.xml

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... /> 

Allerdings funktioniert dies auch nicht und ich bekomme immer noch den obigen Fehler.

Unten ist der Controller-Code für Datei herunterladen:

@RequestMapping(value = "/admin/file/download", method = RequestMethod.GET) 
public @ResponseBody ModelAndView download(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 
    int id = ServletRequestUtils.getRequiredIntParameter(request, "id"); 
    Files file = this.filesManager.find(id); 
    response.setContentType(file.getType()); 
    response.setContentLength(file.getFile().length);  
    response.setHeader("Content-Disposition", "attachment; filename=\""+ file.getFilename() + "\""); 
    FileCopyUtils.copy(file.getFile(), response.getOutputStream());  
    response.flushBuffer();  
    return null; 

} 

Die Klasse Files speichert die Dateiinformationen aus der Datenbank:

public class Files { 
    private int id; 
    private String filename;  
    private String type; 
    private byte[] file; 
    } 

ich auch die unterhalb der Linie versucht haben, zu entfernen, aber immer noch das gleiche gibt Fehler:

 response.setHeader("Content-Disposition", 
"attachment; filename=\""+ file.getFilename() + "\""); 
+0

Kann jemand das beantworten? – NaiveCoder

Antwort

1

Ich hatte ein ähnliches Problem. In meinem Fall hatte das Antwortobjekt tatsächlich zu viele Header und ihre Gesamtlänge überschritt maxHttpHeaderSize. Versuchen Sie, Ihr Antwortobjekt mit einem Debugger zu überprüfen: Es befindet sich auf Tomcat und enthält wahrscheinlich ein coyoteResponse Objekt mit einem headers Feld. Vielleicht finden Sie einige überflüssige Set-Cookie Header oder so?

Verwandte Themen