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

Dynamic file uploading&validation with laravel 4.2 and jQuery

本文关键字:文件 动态 验证 laravel jQuery 使用      更新时间:2023-09-26

我不能使用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)
  }
}

Result: validation always对于mime类型失败。我还尝试了image/png image/jpg image/bmg和application/pdf,而不是png jpg BMP pdf。

你们提供什么?至少,是否有一种方法可以用jQuery以格式化的方式发布文件,以获得laravel Input::文件格式?

这是一个简单的问题,却找到了简单的解决方法。

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

已获得输入,已验证。

谢谢。