Laravel 5.8での検証の.tarファイルのアップロード

cyber8200:

私はこのコードを持っています

$inputs    = Input::all();
$file      = Input::file('file');
$validator = Validator::make($request->all(), [
    'file' => 'required|max:50000|mimes:application/x-tar',
]);

if ($validator->fails()) {

    $messages = $validator->messages();
    dd($file,$messages); <<<< --- keep executing 


    return Redirect::to('/vnf-packages/create')->withErrors($validator)->withInput()
    ->with('error','Something is wrong with your upload image');
} else {
..
}

それが失敗するブロックに入るまま、なぜ私は知りません。私はファイルをアップロードしました.tar

私は自分のコードに何か足りませんか?


更新しました

あなたが見ることができるように、私は.tarファイルをアップロードしました

dd($file,$messages);

UploadedFile {#446 ▼
  -test: false
  -originalName: "config-vnfp-vyos-567.tar"
  -mimeType: "application/x-tar"
  -error: 0
  #hashName: null
  path: "/private/var/tmp"
  filename: "phpNaZGxr"
  basename: "phpNaZGxr"
  pathname: "/private/var/tmp/phpNaZGxr"
  extension: ""
  realPath: "/private/var/tmp/phpNaZGxr"
  aTime: 2020-03-09 15:10:28
  mTime: 2020-03-09 15:10:28
  cTime: 2020-03-09 15:10:28
  inode: 14703131
  size: 140
  perms: 0100600
  owner: 70
  group: 0
  type: "file"
  writable: true
  readable: true
  executable: false
  file: true
  dir: false
  link: false
}
MessageBag {#454 ▼
  #messages: array:1 [▼
    "file" => array:1 [▼
      0 => "The file must be a file of type: tar."
    ]
  ]
  #format: ":message"
}

更新2

'file' => 'required|max:50000|mimes:tar', //fail 
'file' => 'required|max:50000|mimes:application/x-tar', //fail 
'file' => 'required', //success 
チン・レオン:

私はとのアップロードテストしようとした.tarファイルを、私が使用した場合getMimeTypeの方法を、それは次の値を返します。

application/gzip

だからあなたの検証ルールは次のようになります。

'file' => 'required|mimetypes:application/gzip',

あなたが使用したい場合はmimes、ルールを、あなたはこのような何かをしたいと思います。

'file' => 'required|mimes:gz',

そして、いくつかの研究で、私は次のことを発見しました:https://superuser.com/questions/901962/what-is-the-correct-mime-type-for-a-tar-gz-file

あなたは、バリデータは、これら2つのルールを検証する方法についての詳細な情報を見つけることができますIlluminate/Validation/Concerns/ValidatesAttributes.php

validateMimesこの方法は、ファイルの使用guessExtension()どの返すメソッドを、gz

$value->getPath() !== '' && in_array($value->guessExtension(), $parameters)

そして、validateMimeTypesこの方法の確認は、ファイルの使用getMimeType()どの返すメソッドをapplication/gzip

return $value->getPath() !== '' &&
    (in_array($value->getMimeType(), $parameters) ||
    in_array(explode('/', $value->getMimeType())[0].'/*', $parameters));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=343245&siteId=1