generated from VLADIMIR/template
fix filenames
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,66 @@
|
||||
package string_tools
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
replacer = strings.NewReplacer(
|
||||
"а", "a",
|
||||
"б", "b",
|
||||
"в", "v",
|
||||
"г", "g",
|
||||
"д", "d",
|
||||
"е", "e",
|
||||
"ё", "yo",
|
||||
"ж", "zh",
|
||||
"з", "z",
|
||||
"и", "i",
|
||||
"й", "y",
|
||||
"к", "k",
|
||||
"л", "l",
|
||||
"м", "m",
|
||||
"н", "n",
|
||||
"о", "o",
|
||||
"п", "p",
|
||||
"р", "r",
|
||||
"с", "s",
|
||||
"т", "t",
|
||||
"у", "u",
|
||||
"ф", "f",
|
||||
"х", "h",
|
||||
"ц", "ts",
|
||||
"ч", "ch",
|
||||
"ш", "sh",
|
||||
"щ", "sch",
|
||||
"ъ", "",
|
||||
"ы", "y",
|
||||
"ь", "",
|
||||
"э", "e",
|
||||
"ю", "yu",
|
||||
"я", "ya",
|
||||
" ", "_",
|
||||
)
|
||||
)
|
||||
|
||||
// Transliterate выполняет транслитерацию русского текста в латиницу,
|
||||
// заменяет пробелы на _, удаляет все остальные символы, кроме цифр (знаки препинания и т.д.)
|
||||
func Transliterate(text string) string {
|
||||
|
||||
// Приводим к нижнему регистру и транслитерируем
|
||||
result := replacer.Replace(strings.ToLower(text))
|
||||
|
||||
// Удаляем все символы, кроме букв латиницы, подчеркивания и цифр
|
||||
reg := regexp.MustCompile(`[^a-z0-9_]`)
|
||||
result = reg.ReplaceAllString(result, "")
|
||||
|
||||
// Удаляем множественные подчеркивания (опционально)
|
||||
regMulti := regexp.MustCompile(`_+`)
|
||||
result = regMulti.ReplaceAllString(result, "_")
|
||||
|
||||
// Удаляем подчеркивания в начале и конце строки (опционально)
|
||||
result = strings.Trim(result, "_")
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package file_service
|
||||
import (
|
||||
"context"
|
||||
"evening_detective_server/internal/modules/file_storage"
|
||||
"evening_detective_server/internal/modules/string_tools"
|
||||
)
|
||||
|
||||
type FileService struct {
|
||||
@@ -21,6 +22,7 @@ func (s *FileService) UploadFile(
|
||||
ctx context.Context,
|
||||
file *file_storage.File,
|
||||
) (string, error) {
|
||||
file.Name = string_tools.Transliterate(file.Name)
|
||||
if err := s.fileStorage.Put(ctx, file); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user