Laravel 5.8中的验证.tar文件上传

问题描述 投票:0回答:1

我有此代码

$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 
php laravel validation laravel-5 laravel-5.8
1个回答
0
投票

[我尝试用.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

© www.soinside.com 2019 - 2024. All rights reserved.