Przeglądaj źródła

feat: 编码转换

zhangxinlei1996 1 rok temu
rodzic
commit
841cc1d805
1 zmienionych plików z 16 dodań i 1 usunięć
  1. 16 1
      api/internal/logic/fileuploadlogic.go

+ 16 - 1
api/internal/logic/fileuploadlogic.go

@@ -3,6 +3,7 @@ package logic
 import (
 	"context"
 	"fmt"
+	"io"
 	"io/ioutil"
 	"log"
 	"net/http"
@@ -15,6 +16,7 @@ import (
 	"bp.jydev.jianyu360.cn/CRM/application/api/internal/types"
 	"bp.jydev.jianyu360.cn/CRM/application/service"
 	"github.com/zeromicro/go-zero/core/logx"
+	"golang.org/x/text/encoding/charmap"
 )
 
 type FileUploadLogic struct {
@@ -39,13 +41,15 @@ func (l *FileUploadLogic) FileUpload(req *types.FileUploadReq) (resp *types.Repl
 	status := 1
 	defer file.Close()
 	bt, _ := ioutil.ReadAll(file)
+	utf8Filename, err := convertToUTF8(header.Filename)
+
 	up, err := cm.FileCenterRpc.Upload(l.ctx, &fpb.UploadReq{
 		File:          bt,
 		OssBucketName: cm.C.OssBucketName,
 		OssUrl:        cm.C.OssUrl,
 		Name:          header.Filename,
 	})
-	log.Println("=====", header.Filename)
+	log.Println("=====", header.Filename, "~~", utf8Filename)
 	if up == nil || up.Url == "" {
 		resp.Error_code = -1
 		resp.Error_msg = "上传失败"
@@ -99,3 +103,14 @@ func (l *FileUploadLogic) FileUpload(req *types.FileUploadReq) (resp *types.Repl
 	resp.Data = data
 	return
 }
+
+func convertToUTF8(iso8859Filename string) (string, error) {
+	iso8859Decoder := charmap.ISO8859_1.NewDecoder()
+	utf8Bytes, err := io.ReadAll(iso8859Decoder.Reader(strings.NewReader(iso8859Filename)))
+	if err != nil {
+		return "", err
+	}
+
+	utf8Filename := string(utf8Bytes)
+	return utf8Filename, nil
+}