參考之前回答的 stackoverflow 問題,在 Laravel 5.4 中獲取失敗上傳檔案的檔案名,我已經實作了相同的,但我沒有得到失敗的上傳檔案名。請如果有人可以幫助我在哪里做錯了
$validationArray = [];
$messages = [];
if($request->hasfile('uploads')){
// dd($request->file('uploads'));
foreach ($request->file('uploads') as $key => $file) {
$validationArray['uploads.'.$key.'.image'] = 'The ' . $file->getClientOriginalName() . ' must be an image.';
}
$messages = [
$validationArray
];
}
$request->validate([
// 'customer_name' => 'required|exists:users,id',
'uploads' => 'required|array',
'uploads.*' => 'image|mimes:jpg,jpeg,png'
], $messages);
有了這個,我得到了錯誤
The uploads.0 must be an image.
The uploads.0 must be a file of type: jpg, jpeg, png.
我想用檔案名代替 uploads.0
uj5u.com熱心網友回復:
嗨,我想我得到了你的答案,我在這里發現了同樣的問題https://laracasts.com/discuss/channels/laravel/get-filename-of-failed-multiple-uploaded-files-in-laravel 好的您可以對您的驗證執行此操作
$messages = [];
if($request->hasfile('uploads')){
// dd($request->file('uploads'));
foreach ($request->file('uploads') as $key => $file) {
$messages['uploads.'.$key.'.image'] = 'The ' . $file->getClientOriginalName() . ' must be an image.';
$messages['uploads.' . $key . '.mimes'] = 'The ' . $file->getClientOriginalName() . ' must be a file of type: :values.';
}
}
$request->validate([
// 'customer_name' => 'required|exists:users,id',
'uploads' => 'required|array',
'uploads.*' => 'image|mimes:jpg,jpeg,png'
], $messages);
并將錯誤提取到您的刀片中
用于獲取是否未選擇檔案
@if ($errors->has('uploads'))
<div class="help-block has-error">
<strong>{{ $errors->first('uploads') }}</strong>
</div>
@endif
如果多個選定的檔案有錯誤
@if($errors->has('uploads.*'))
@foreach ($errors->get('uploads.*') as $message)
@foreach ( $message as $value)
<div class="help-block has-error">{{ $value }}</div>
@endforeach
@endforeach
@endif
希望能幫助到你
uj5u.com熱心網友回復:
看起來不錯,但試試這個應該可以。
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/507608.html
標籤:php 拉拉维尔 laravel-5 laravel-8
