使用laravel 4.2和jQuery进行动态文件上传和验证

时间:2015-08-07 07:36:21

标签: javascript php jquery validation laravel-4

我无法使用Input :: file(' elementName')因为我需要通过jQuery发布文件以用于动态目的。

我使用FormData()

发布所选文件
var data = new FormData();
    jQuery.each(jQuery('#fieldName')[0].files, function(i, file) {
        data.append('fieldName-'+i, file);
    });

    jQuery.ajax({
        url: 'postFile',
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        type: 'POST',
        success: function(data){
            console.log(data);
        }
    });

然后我用$ _FILES函数获取数据。

但是当我尝试使用laravel验证器时,它对我不起作用:

//$file is not null and can get the values with var_dump
$file = $_FILES['fieldName-0'];
$fileValidator = Validator::make(
   array('fileValidation' => $file),
   array('fileValidation' => 'required|mimes:png,jpg,bmp,pdf|max:5000')
);

var_dump($ _ FILES)在上传随机文件时返回:

array(1) {
  ["fieldName-0"]=>
  array(5) {
    ["name"]=>
    string(7) "aaa.png"
    ["type"]=>
    string(9) "image/png"
    ["tmp_name"]=>
    string(14) "/tmp/php4jQw3L"
    ["error"]=>
    int(0)
    ["size"]=>
    int(35438)
  }
}

结果:mime类型的验证始终失败。我也试过image / png image / jpg image / bmg和application / pdf而不是png jpg bmp pdf。

你提供什么?至少,有没有办法用格式化的方式发布jQuery文件以获得laravel Input :: file格式?

1 个答案:

答案 0 :(得分:0)

这是一个简单的问题,并为它找到了简单的解决方案。

$file = (Input::file('fieldName-0'));

得到输入,验证。

感谢。