【问题标题】:Laravel 5.4 file upload validation fails for python filespython文件的Laravel 5.4文件上传验证失败
【发布时间】:2019-04-01 20:07:39
【问题描述】:

我正试图找出我的验证出了什么问题,但我不确定。

我创建了一个将文件上传到 S3 的文件上传。工作正常,除非我需要验证 python 文件。

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

我还在config 文件夹中添加了mimes.php,其中包含以下内容:

<?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'),
];

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

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

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

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

当我从 rules() 中删除 mimes 检查时,它通过了。

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

有什么想法可能是错的吗?

【问题讨论】:

    标签: php laravel mime-types


    【解决方案1】:

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

    $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',
    );
    

    【讨论】:

    • 嗨!没关系,但我正在考虑使用它通常在 Laravel 中完成的方式,而不是自己检查 :)
    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2013-06-28
    • 2014-03-31
    • 2022-08-13
    相关资源
    最近更新 更多