【发布时间】:2015-10-30 13:34:17
【问题描述】:
我不能使用 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 格式?
【问题讨论】:
-
您在 var_dump 中获得了什么 MIME?
-
获取名称、大小等的数组,如果您愿意,我可以分享确切的值
-
你试过这个pathinfo($target_file,PATHINFO_EXTENSION) ???
-
还没有,我马上反馈
-
@Rayon Dabre,$target_file 应该包括什么?因为它需要一个字符串值。顺便说一句,我用 var_dump($_FILES); 上传了我的帖子。返回值。
标签: javascript php jquery validation laravel-4