getMimeType() ?: ($file->getClientMimeType() ?: 'application/octet-stream'); $role = strtolower(strtok($mime, '/')); // 'application' | 'image' | ... // Usuń dotychczasowy plik tej roli (legacy trzymał 1 kartę + 1 zdjęcie). EquipmentFile::on('softspm') ->where('EQF_EQU_ID', $equId) ->whereRaw("lower(substring_index(EQF_FILE_TYPE, '/', 1)) = ?", [$role]) ->delete(); EquipmentFile::create([ 'EQF_EQU_ID' => $equId, 'EQF_FILE' => $file->getContent(), 'EQF_FILE_TYPE' => $mime, 'EQF_FILE_SIZE' => (string) $file->getSize(), 'EQF_FILE_NAME' => $this->sanitize($file->getClientOriginalName()), 'EQF_STATUS' => '1', 'EQF_AUDIT_CU' => $user, 'EQF_AUDIT_CD' => Carbon::now()->toDateTimeString(), ]); } /** * Czyszczenie nazwy pliku jak legacy delPolishAndBlankCharactersFromFileName: * polskie znaki -> ASCII, spacje/myślniki -> '_', usunięcie znaków * specjalnych, małe litery. Zachowuje kropkę (rozszerzenie). Limit 128 zn. */ public function sanitize(string $name): string { $map = [ 'ą'=>'a','ż'=>'z','ź'=>'z','ć'=>'c','ś'=>'s','ę'=>'e','ó'=>'o','ł'=>'l','ń'=>'n', 'Ą'=>'a','Ż'=>'z','Ź'=>'z','Ć'=>'c','Ś'=>'s','Ę'=>'e','Ó'=>'o','Ł'=>'l','Ń'=>'n', ]; $val = strtr($name, $map); $val = str_replace([' ', '-'], '_', $val); $val = preg_replace('/[^A-Za-z0-9._]/', '', $val); return substr(strtolower($val), 0, 128); } }