验证.csv文件时出现Laravel MIME问题

时间:2016-02-23 06:39:36

标签: validation laravel-5 mime

关于使用laravel上传文件时检查文件扩展名的问题,我已阅读了几篇文章。

我有同样的问题,即使花了一个小时来讨论愚蠢的事情也没有提交解决方案。

这是我的验证规则。

public function rules()
{
    return [
       'sheet' => 'required',
       'file' => 'mimes:csv',
    ];
} 

但是需要的是工作文件,但是在哑剧上。

我尝试了几个我创立的其他方式:

return [
    'sheet' => ['required', 'mimes:csv']
]

return [
    'sheet' => ['required', 'mimes:text/csv']
]

return [
    'sheet' => 'required|mimes:text/csv'
];

return [
    'sheet' => 'required|mimes:csv'
];

return [
    'sheet'          => 'required',
    'extension'      => 'required|in:csv'
];

以上没有任何行正在工作,有时说无效文件通过验证。

我怀疑无效文件,然后我从Microsoft网站下载了新的示例文件。这根本不是问题。

任何人都可以帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:10)

惊讶!

它获得了CSV的text/plain mime,这就是问题的原因。

所以为了解决这个问题,我发现哪个扩展程序负责text/plain,我找到 txt ,所以我刚刚更新了我的规则:

return [
    'sheet' => 'required|mimes:csv,txt'
];

答案 1 :(得分:1)

我遇到了同样的问题,即使它已经很老了,我希望这会对其他人有所帮助。 要修复它,您必须知道从您的请求中获得了什么 mime,使用以下代码行找到它:

dd($request->file('document')->getMimeType(),$request->file('document')->getClientOriginalExtension() );

所以在我的情况下,我上传的文件是 CSV,但我有一个 txt 文件扩展名。所以我像这篇文章中以前的答案一样解决它,只需添加 txt 来请求验证:

return [
    'sheet' => "required|mimes:csv,txt",
];

答案 2 :(得分:0)

以下是我用于更完整的 csv验证的几种类型,希望对以后的使用有所帮助

        return [
            'sheet' => 'required|mimetypes:text/csv,text/plain,application/csv,text/comma-separated-values,text/anytext,application/octet-stream,application/txt'
        ];