2013-05-02 9 views
10

मुझे टोकन और फ़ाइल फ़ील्ड फॉर्म में समस्या है।बड़ी फ़ाइलों के साथ Symfony2 अमान्य टोकन

प्रपत्र की मान्यता इस तरह है:

public function getDefaultOptions(array $options) 
{ 
    $collectionConstraint = new Collection(array(
     'fields' => array(
      'file' => new File(
       array(
        'maxSize' => '2M', 
        'mimeTypes' => array(
         'application/pdf', 'application/x-pdf', 
         'image/png', 'image/jpg', 'image/jpeg', 'image/gif', 
        ), 
       ) 
      ), 
     ) 
    )); 

    return array(
     'validation_constraint' => $collectionConstraint 
} 

जब मैं एक आकार की सूचना अवैध फ़ाइल (~ 5MB) मैं इस त्रुटि मिलती है जो है मैं क्या आशा अपलोड करें:

The file is too large. Allowed maximum size is 2M bytes 

लेकिन जब मैं एक बहुत बड़ी फ़ाइल (~ 30 एमबी) त्रुटि परिवर्तन अपलोड करता हूं:

The CSRF token is invalid. Please try to resubmit the form 
The uploaded file was too large. Please try to upload a smaller file 

समस्या त्रुटि टोकन है। मेरे पास {{form_rest (form)}} कोड है। मुझे लगता है कि त्रुटि परिवर्तन इस वजह से है: How to increase the upload limit for files on a Symfony 2 form?

मैं अपलोड सीमा में वृद्धि नहीं करना चाहता हूं। मैं चाहता हूं कि टोकन त्रुटि दिखाई न दे।

+0

आप इस के साथ कहीं भी मिली थी? – richsage

+0

मुझे इसके लिए कोई समाधान नहीं मिला। मैं getDefaultOptions में csrf_portection को गलत पर सेट करता हूं लेकिन यह त्रुटि संदेश से बचने के लिए है। यदि आपको कोई समाधान मिलता है, तो कृपया मुझे पिंग करें। – Biruwon

उत्तर

7

पीएचपी (नहीं Symfony) फ़ाइल को खारिज कर दिया है, तो उस में अपने कॉन्फ़िगर किए गए मूल्यों से बड़ा है:

post_max_size 
upload_max_filesize 
इस CSRF त्रुटि फेंक दिया जाता है वजह से

यदि आप इससे बचना चाहते हैं तो आपको अपलोड सीमा बढ़ाना होगा। यही एकमात्र रास्ता है। यदि आप अपनी फ़ाइल-बाधा जोड़ते हैं तो यह कोई जोखिम नहीं होना चाहिए।

-2

आपके Entity.php में आपको अपने Assert file पर "maxSize" संपत्ति निर्दिष्ट करने की आवश्यकता है।

उदाहरण के लिए, मूल्य "2147483648" 2 जीबी के बराबर है।

/** 
* @ORM\Column(type="string", length=255) 
*/ 
public $path; 

/** 
* @Assert\File(maxSize="2147483648") 
*/ 
public $file; 
0

समस्या

CSRF token invalid & upload file too large errors

यह दो त्रुटियों रूप होते हैं उत्पन्न त्रुटियों, और क्षेत्र त्रुटियों के अलावा, वे जब किसी भी अपवाद रूप के अंदर होता दिखाई देगा।

फ़ाइलों CSRF टोकन अमान्य त्रुटि अपलोड करने के इस मामले में कारण post_max_size विन्यास फाइल और अपलोड फ़ाइल में बहुत बड़ी त्रुटि में पैरामीटर php.ini प्रकट होता है php में कारण upload_max_filesize पैरामीटर दिखाई देता है .ini कॉन्फ़िगरेशन फ़ाइल।

समाधान:

1- आप विन्यास फाइल में मूल्य में वृद्धि कर सकते हैं।

2- आपके पास फ़ील्ड सत्यापन और टिप्पणी हो सकती है या template.html.twig के अंदर form_errors की रेखा को छोड़ सकती है, ध्यान दें कि यह समाधान सभी प्रकार की फ़ॉर्म जेनरेट त्रुटियों की सूचनाओं को हटा देगा।

template.html.twig का उदाहरण:

<div class="form"> 
{{ form_start(form) }} 

    {{ form_errors(form) }} --> before 
    {# {{ form_errors(form) }} #} --> after 

    <div class="field"> 
     {{ form_label(form.field) }} 
     {{ form_errors(form.field) }} 
     {{ form_widget(form.field) }} 
    </div> 

{{ form_end(form) }} 
</div> 
संबंधित मुद्दे