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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"evening_detective_server/internal/modules/file_storage"
|
"evening_detective_server/internal/modules/file_storage"
|
||||||
|
"evening_detective_server/internal/modules/string_tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FileService struct {
|
type FileService struct {
|
||||||
@@ -21,6 +22,7 @@ func (s *FileService) UploadFile(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
file *file_storage.File,
|
file *file_storage.File,
|
||||||
) (string, error) {
|
) (string, error) {
|
||||||
|
file.Name = string_tools.Transliterate(file.Name)
|
||||||
if err := s.fileStorage.Put(ctx, file); err != nil {
|
if err := s.fileStorage.Put(ctx, file); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user