Php Laravel 5.1验证在正确的mime/扩展上失败

Php Laravel 5.1验证在正确的mime/扩展上失败,php,validation,laravel-5,laravel-5.1,Php,Validation,Laravel 5,Laravel 5.1,我使用请求类进行验证。我有一个请求类,其中包含以下代码: public function rules() { $rules = [ 'attachment' => 'mimes:png,jpg,gif' ]; } 在我的控制器中执行$request->file('attachment')->getClientMimeType()返回image/png 然而,每当我尝试发送一个png文件时,我仍然会收到一个验证错误:“附件必须是一个类型为png、jpg、g

我使用请求类进行验证。我有一个请求类,其中包含以下代码:

public function rules()
{
    $rules = [
        'attachment'  => 'mimes:png,jpg,gif'
    ];
}
在我的控制器中执行
$request->file('attachment')->getClientMimeType()
返回
image/png

然而,每当我尝试发送一个png文件时,我仍然会收到一个验证错误:“附件必须是一个类型为png、jpg、gif的文件。”

我正在使用一个名为rest的客户端通过

我漏了一步吗


编辑:我不能使用
image
作为验证规则,因为我最终希望开始接受pdf/doc和其他格式(
image
顺便说一句失败)。到目前为止,PDF和doc都未通过验证。

根据上载文件时必须提及的
多部分/表单数据
,因此不会对字符进行编码,这可能会导致验证失败。

我知道此线程很旧,但这可能会帮助其他可能遇到相同问题的人。顺便说一下,我正在使用“附件[]”作为输入名称。我用这个让它工作起来:

$this->validate(request(), [
        'attachments.*' => 'required|mimes:jpeg,png,pdf'
]);

使用点(.)星号解决了我的问题。

我也遇到了这个问题,没有任何效果。因为代码在本地运行良好,在我的ubuntu服务器上运行失败。对我来说,有效的方法是删除laravel验证并使用普通的php验证。有时候简单就是有效的

请发布表单html partI,我正在使用一个名为Paw的REST客户端将请求发送到后端。我将根据您是否尝试使用
image
规则更新问题?@user2094178不,我没有。我最终也想开始接受pdf和doc文件,但这些文件也失败了。你说
图像
失败了,这让我相信上传没有按预期工作-可能是Paw缺陷?您是否尝试过使用其他客户端,甚至浏览器?我的
内容类型
标题设置为
多部分/表单数据
您可以从浏览器网络选项卡发布请求标题吗?(只需复制所有标题,以确保没有出错)@Xecure您也确保该文件实际上是
png
类型吗?我不是使用chrome,而是使用一个名为Paw的REST客户端来发出这些请求。根据Paw给出的cURL输出,这些是我的头:-H“Cookie:laravel_session=EYJPDii6IMNTFYEVV6V3NLNGRNVY25PD3C9PSISINZHBHVLIKOIMEFCSKFKVU9ORW3C21SVW5WJLOBUQZWRGNEZYNJHY1OZMNRC2FQSMXMZ3BMTWSXD2PRVGPXVFJSEG5WNG1UKZ4UKZLZWWW1BDZ09IIWIBWWWFFJIJOYZYYZUYZUYZDK2NDFIMMY1ZJJQ2JJJJZYZYZY2MZY2MK9MJJJJJJJJJJJJJ2M4FYNZYNZK9”数据类型:多段内容表;boundary=a3k5xyong4kqtbfpcmlahtvd3ss8fbb5r“\根据www.mime.ritey.com并调用
$request->file('attachment')->getClientMimeType()
在我的控制器中,我试图上载的文件的mime类型为'image/png',此验证规则没有影响,它只接受任何内容。您能详细说明原因吗?@minhazurI不确定,但此规则接受所有内容,可能是因为。*@userOh我明白您的意思,但我的回答清楚地表明我使用的是
附件[index]
作为我的输入名称。因此附件。*表示“附件”输入名称的所有索引。Laravel文档提到我们可以使用这种验证[