Pau*_*leb 2 php laravel laravel-validation laravel-5.3 laravel-5.4
我正在尝试验证我的表单请求。我正在做的是上传音频,即 mp3、wav 等,我遇到的问题是它不断向我抛出一条错误消息,说“文件类型必须是 mp3”,我尝试上传一个图像,它说文件类型必须是 mp3,我也尝试上传 mp3,它说同样的事情,下面是我的音频控制器。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
class UploadController extends Controller
{
public function uploadsingle(Request $request)
{
$validator = Validator::make($request->all(), [
'song' => 'required|mimes:image/png',
]);
if($validator->fails()){
return redirect()->back()->withErrors($validator)->withInput();
}
///save audio, etc
echo 'validation passed';
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 html 代码
<title>Upload page</title>
@include('layouts.page-life')
@include('layouts.navbar')
<h1>Upload Page</h1>
<br>
<form action="{{ route('doupload') }}" method="POST">
{{ csrf_field() }}
@if (count($errors) > 0)
<div class="alert alert-danger alert-dismissible" role="alert">
<ul>
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<input name="song" type="file"/>
<br>
<button class="btn">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
以下验证将接受 wav、mp3 等。此代码对我有用。
$validator = Validator::make($request->all(), [
'song' => 'required|mimes:application/octet-stream,audio/mpeg,mpga,mp3,wav',
]);
Run Code Online (Sandbox Code Playgroud)
或将其写在单独的请求文件中:例如: app/Http/Requests/SongStoreRequest.php
public function rules(){
['song' => 'required|mimes:application/octet-stream,audio/mpeg,mpga,mp3,wav'];
}
Run Code Online (Sandbox Code Playgroud)