gpt4 book ai didi

php - 循环内的多个文件验证

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:52 24 4
gpt4 key购买 nike

如何在循环中对多个文件使用 Laravel 文件验证?

通常在单个文件验证中,我可以这样做

$validator = Validator::make($request->all(),[
'image' => 'image|max_width:1000|max_height:1000'
]);
if($validator->fails()){
//validation fails
}

但现在我想在一个进程中验证多个文件,比如

//store to a variable
$file = $request->file('image');
if($file){ //if request file image exist
foreach($request->file('image') as $i){
//here, validate each file image, but it just I don't know how
}
}

现在前端方面,详细说明一次发送多个文件的过程。

$(document).on("change",'input[type="file"]',function(){
if($(this).val()!==""){
var files = this.files;
handleFileUpload(files);
$(this).val("");
}
});

function handleFileUpload(files)
{
//create a formData
var fd = new FormData();
//loop through e
for (var i = 0; i < files.length; i++)
{
//append each file object to the formData
fd.append('image[]', files[i]);
}
//this function is where ajax request will be process
sendFileToServer(fd);
}

所以在后端,如果我转储请求,我会得到这些

array(2) { [0]=> object(Illuminate\Http\UploadedFile)#214 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> bool(false) ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(50) "12400457_643171672489204_2452820305362127031_n.jpg" ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(10) "image/jpeg" ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(18413) ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(0) ["pathName":"SplFileInfo":private]=> string(25) "C:\wamp64\tmp\phpBAE4.tmp" ["fileName":"SplFileInfo":private]=> string(11) "phpBAE4.tmp" } [1]=> object(Illuminate\Http\UploadedFile)#217 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> bool(false) ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(39) "13296200_702501119889592_55691535_n.jpg" ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(10) "image/jpeg" ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(95383) ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(0) ["pathName":"SplFileInfo":private]=> string(25) "C:\wamp64\tmp\phpBAE5.tmp" ["fileName":"SplFileInfo":private]=> string(11) "phpBAE5.tmp" } }

关于如何在循环内的多个文件上使用 Laravel 文件验证的任何想法、线索和帮助?

PS: 我在 Laravel 5.2 上运行

最佳答案

尝试将 image 文件输入字段作为数组发送,然后使用数组验证。如果您使用的是 Laravel 5.2,则可以使用数组验证 并放弃用于构建规则的 foreach 循环。

首先,您需要将文件输入设置为数组...

如果您使用一个输入字段:

<input type="file" name="image[]" multiple>

然后你的请求将通过看起来像这样的东西来实现:

array:2 [▼
"_token" => "oX3sTXPDnNiVj9mX20VOHe2xo1Ahx6sWzU4VHZxh"
"image" => array:2 [▼
0 => UploadedFile {#147 ▶}
1 => UploadedFile {#146 ▶}
]
]

然后使用数组验证,您的规则将在验证器中通过使用星号来指示数组字段来声明:

$validator = Validator::make($request->all(),[
'image.*' => 'image|max_width:1000|max_height:1000'
]);

查看此处的文档以获取更多信息:https://laravel.com/docs/5.2/validation#validating-arrays

关于php - 循环内的多个文件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com