音频验证问题 laravel 5.4

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">&times;</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)

Amr*_*tha 5

以下验证将接受 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)