2012-07-04 48 views
24

में फ़ाइल अपलोड आकार मैं खेलने ढांचा 2.0 में बड़ी फ़ाइलों (1 से अधिक एमबी) अपलोड किए जाने पर मैंमैक्स प्ले ढांचा 2.0

"413 अनुरोध इकाई बहुत बड़ी" त्रुटि मिलती है।

क्या आप कृपया किसी से सुझाव दे सकते हैं कि इससे कैसे छुटकारा पाना है?

धन्यवाद,

अद्यतन मैं

#set फ़ाइल का अधिकतम आकार application.conf को

parsers.MultipartFormData.maxLength इस जोड़कर इस समस्या हल हो जाती है = 10240K

+5

'parsers.MultipartFormData.maxLength = x'' में application.conf' प्ले 2.2.x – dbau

+1

पर काम नहीं लगता है यह 2GB से अधिक के मूल्यों के साथ काम करने के लिए प्रतीत नहीं होता। मैंने 4096 एम का इस्तेमाल किया और मैंने 3.96 जीबी फ़ाइल अपलोड की और यह अभी भी असफल रहा। कोई 413 त्रुटि नहीं, लेकिन जब मैंने को कॉल करने का प्रयास किया 'अनुरोध बॉडी बॉडी = अनुरोध() शरीर(); मल्टीपार्टफॉर्मडाटा फॉर्म बॉडी = body.asMultipartFormData(); ' फॉर्म बॉडी शून्य था। इससे मुझे विश्वास होता है कि अपलोड आकार में कुछ कठिन सीमा है।मैं 4-6 जीबी आकार की फाइलों को अपलोड करने की कोशिश कर रहा हूं। आपकी मदद के लिए –

उत्तर

18

देखें http://www.playframework.com/documentation/2.0.x/ScalaBodyParsers

या जावा संस्करण: http://www.playframework.com/documentation/2.0.x/JavaBodyParsers

निकालने:

// Accept only 10KB of data. 
def save = Action(parse.text(maxLength = 1024 * 10)) { request => 
    Ok("Got: " + text) 
} 

और आप अपने application.conf का उपयोग कर parsers.text.maxLength में यह कॉन्फ़िगर कर सकते हैं।

+0

अरे धन्यवाद। मैं एक जावा लड़का हूँ। मेरी समस्या जावा के ऊपर लाइनों को कनवर्ट करना था। कोई बात नहीं धन्यवाद। –

+1

"' parsers.text.maxLength' को बहिष्कृत किया गया है, 'play.http.parser.maxMemoryBuffer बजाय' का उपयोग करें "(प्ले 2.4) – Jonik

15

parse.multipartFormData और parse.temporaryFilemaxLength तर्क के रूप में नहीं लेते हैं, जिससे आप को बढ़ाने या parse.text(maxLength) की तरह डिफ़ॉल्ट कमी।

लेकिन आप parse.maxLength(maxLength, wrappedBodyParser) बजाय का उपयोग कर सकते हैं:

// accepts 10 MB file upload 
def save = Action(parse.maxLength(10 * 1024 * 1024, parse.multipartFormData)) { request => 
    request.body match { 
     case Left(MaxSizeExceeded(length)) => BadRequest("Your file is too large, we accept just " + length + " bytes!") 
     case Right(multipartForm) => { 
      /* Handle the POSTed form with files */ 
      ... 
     } 
    } 
} 
+2

BadRequest के बजाय यह EntityTooLarge का उपयोग करने के लिए अधिक उपयुक्त होगा। – Josef

4

मेरे मामले में, मैं एक AJAX अनुरोध (यह एक लंबे पाठ था) पर त्रुटि मिली। इस तरह अनुरोधों के लिए, आप गुण सेट कर सकते हैं:

parsers.text.maxLength = 1024k

खेलने प्रलेखन पर

अधिक जानकारी: https://www.playframework.com/documentation/2.0/JavaBodyParsers

9

खेलने संस्करण 2.4.x के लिए:

पार्सर्स जो कच्चे पार्सर या मल्टीपार्ट/फॉर्म-डेटा जैसे डिस्क पर सामग्री को बफर करते हैं, अधिकतम सामग्री लंबाई play.http.parser.maxDiskBuffer का उपयोग करके निर्दिष्ट की गई है संपत्ति, यह 10 एमबी के लिए डिफ़ॉल्ट है। मल्टीपार्ट/फॉर्म-डेटा पार्सर डेटा फ़ील्ड के कुल के लिए पाठ अधिकतम लंबाई संपत्ति को भी लागू करता है।

https://www.playframework.com/documentation/2.4.x/ScalaBodyParsers

संबंधित मुद्दे