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));