【问题标题】:File Upload form validation文件上传表单验证
【发布时间】:2014-10-02 00:06:29
【问题描述】:

我正在使用 Laravel 4.1,我正在尝试使用内置的验证器选项将上传文件的大小限制为 2mb。

但是,当我使用超大文件 (10mb) 测试验证时,验证不会触发。而是 Input::all() 完全为空,导致出现其他错误。

我在使用文件进行表单验证方面有什么遗漏吗?

这是我正在使用的验证器

$validator = Validator::make(Input::all(), 
    array(
        'submission_status'      => 'required',
        'photo'                  => 'required_if:submission_status,Received|max:1200',
    ),
    $messages
);

模板代码 - 使用 Twig 作为模板引擎

{{ form_open({'url': request_url(), 'method': 'post', 'role': 'form', 'name': 'photo_form', 'id': 'photo-form', 'enctype': 'multipart/form-data'})|raw }}
    <div class="row">
        <div class="col-md-12">
            Please submit a photo of just yourself. A head-and-shoulders photo works well.
        </div>
    </div>
    <div class="row">
        <div class="col-md-1">&nbsp;</div>
        <div class="col-md-11">
            {{ form_radio('submission_status', 'Received', false, {'id': 'photo-now', 'required': 'required', 'aria-describedby': 'submission-status-error'})|raw }} Upload photo now (The file should be no larger than 1.2 megabytes, and in jpeg format)<br />
            {{ form_radio('submission_status', 'Photo by Web promised', false, {'id': 'photo-later', 'required': 'required', 'aria-describedby': 'submission-status-error'})|raw }} Upload photo later<br />
            {{ form_radio('submission_status', 'No photo desired', false, {'id': 'no-photo', 'required': 'required', 'aria-describedby': 'submission-status-error'})|raw }} No photo desired<br />
            <span class="error" id="submission-status-error"></span>
        </div>
    </div>

    <div id="photo-now-form">
        <div>&nbsp;</div>
        <div class="row">
            <div class="col-md-12">
                <p>Please select a photograph of <b>just</b> yourself in jpeg format.<br />
                    <ul>
                        <li>Filenames must have a ".jpg" extension (e.g., myphoto.jpg).</li>
                        <li>The image should be about 4 x 5 inches and have a resolution of 200 pixels per inch.</li>
                        <li>The jpeg file should be between 500 and 1,200 kilobytes (0.5 to 1.2 MB).</li>
                    </ul>
                </p>
            </div>
        </div>
        <div>&nbsp;</div>

        <div class="row">
            <div class="form-group col-md-6">
                {{ form_file('photo', {'class': 'form-control', 'id': 'photo', 'required': 'required'})|raw }}
            </div>
        </div> <!-- row -->
    </div>
    <hr />

    <div class="row">
        <div class="form-group col-md-4 col-md-offset-4">
            {{ form_hidden('_id', candidate._id, {'class': 'form-control', 'id': '_id'})|raw }}
            {{ form_hidden("candidate_id", candidate.candidate_id, {'class': 'form-control', 'id': 'candidate-id'})|raw }}

            {{ form_hidden('page', page, {'class': 'form-control', 'id': 'page'})|raw }}
            {{ form_submit('Submit', {'id': 'save-questionnaire', 'class': 'form-control btn btn-primary'})|raw }}
        </div>
    </div>
{{ form_close()|raw }}

谢谢! --丽莎

【问题讨论】:

  • 您能否发布表单的 HTML。
  • 原始模板更有用,还是呈现的 HTML 更有用?
  • 我不太了解 Twig,但我在您的表单中看不到任何“名称”属性。注释掉您的文件上传字段,并尝试使用普通字段,直到 Input::all() 包含某些内容。
  • 我可以毫无问题地上传较小的文件。我认为这是在文件大小大于 PHP 允许的大小时发生的,我不知道如何弥补这一点。

标签: validation laravel-4


【解决方案1】:

这最终不是表单的问题,而是 PHP 设置处理文件上传的问题。我最终没有想出解决这个问题的办法,因为在 php.ini 文件中取消对上传文件大小的限制是不可行的。

由于表单的使用仅限于非常有限的一组用户,所以我现在在这个问题上加上一个图钉。

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 2012-09-08
    • 2014-09-06
    • 2011-06-29
    • 2011-07-07
    • 2012-05-09
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多