Laravel 5.4文件上传验证对python文件失败

时间:2019-04-01 10:53:38

标签: php laravel mime-types

我正在尝试确定验证有什么问题,但我不确定。

我创建了一个文件上传,将文件上传到S3。除了我需要验证python文件时,效果很好。

在我的FileUploadController.php中,我有一个store(FileStoreRequest $request)方法可以处理上传。我在其中添加了$validatedData = $request->validate();,它可以正常工作。

我还在mimes.php文件夹中添加了config,内容如下:

<?php

return [
  'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
  'py' => array('text/plain', 'application/x-python' , 'application/octet-stream, application/x-python-code, text/x-python-script', 'text/x-python'),
];

我的rules()类中的FileStoreRequest方法是

public function rules()
    {
        return [
            'preprocessor' => 'mimes:py',
        ];
    }

每当我尝试上传python文件时,都会收到错误消息

  

预处理器必须是类型为py的文件。

当我从rules()上删除哑剧检查时,它就会通过。

该规则有效,因为我在另一个视图上测试了该文件以上传zip文件。

任何想法可能有什么问题吗?

1 个答案:

答案 0 :(得分:0)

您可以创建自定义验证,例如:

$input = $request->all();

if (isset($input["preprocessor"]) && !empty($input["preprocessor"])) {        
$filesource = $input["preprocessor"];
$fileExtension = $filesource->getClientOriginalExtension();
$input["ext"] = $fileExtension;
} 

$rules = array(
'ext' => 'nullable|in:py',
);