我正在尝试确定验证有什么问题,但我不确定。
我创建了一个文件上传,将文件上传到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文件。
任何想法可能有什么问题吗?
答案 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',
);