我无法使用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格式?
答案 0 :(得分:0)
这是一个简单的问题,并为它找到了简单的解决方案。
$file = (Input::file('fieldName-0'));
得到输入,验证。
感谢。