Ошибка загрузки файла Laravel 5.4 для файлов Python - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь выяснить, что не так с моей проверкой, но я не уверен.

Я создал файл загрузки, который загружает файл на 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 голосов
/ 01 апреля 2019

Вы можете создать пользовательскую проверку, например:

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