【发布时间】:2021-10-11 06:40:02
【问题描述】:
我想验证多个文件的大小,如果大小不合适,我想调整单个文件的大小,如果大小合适,我以原始大小上传。
我在前面有几个输入:
<div class="form-group">
<strong>SELECT MAIN IMAGE (required)</strong>
<input type="file" name="files[fileMain]" id="fileMain" class="form-control-file border
mb-1 {{ $errors->has('fileMain') ? ' is-invalid' : '' }}" >
</div>
和
<div class="form-group">
<input type="file" name="files[]" id="file1" class="form-control-file border mb-1
{{$errors->has('file') ? ' is-invalid' : '' }}" >
</div>
在我的控制器中: 我用:
foreach($request->file('files') as $index => $file) {
// Laravel validators methods works only for arrays so new Request array is created here
$single_file_array = new Request(
[
'files[]' => $file
]);
// send single file to validator
$imageSizeValidation = ImageUtil::imageSizeValidator($single_file_array,
ENUMS::MAX_IMAGE_RESOLUTION_FOR_PROVIDER);
if($imageSizeValidation) {
$new_name = ImageUtil::uploadOriginalImageFileToBlogFolder2($file, $dest_folder);
} else {
// resize image and save to dB
$new_name = ImageUtil::resizeImage2($file, ENUMS::MAX_IMAGE_RESOLUTION_FOR_PROVIDER,
$dest_folder);
}
}
我的验证器看起来像:
$sizeValidator = Validator::make($request->all(),
[
'files.*' => Rule::dimensions()->maxWidth($predefined_max_size)
]);
if($sizeValidator->fails()) {
return false;
}
return true;
所有文件都是真实的 :( 这意味着验证器看不到文件并且不验证它们。 这段代码有什么问题? 如何验证单个文件,然后决定如果单个文件失败该怎么办 我不想一次发送所有文件,因为它不会让我决定单个文件。
【问题讨论】:
标签: php laravel validation file-upload