Zuulはファイルをアップロードして、中国語のファイル名の文字化けして解決方法

1848 ワード

テキストリンク:https://juejin.im/post/5991af0c6fb9a03c5945a308
転載は出典を明記してください:blog.csdn.Net/forezp/arti...本文は方志朋のブログから

問題の説明


プロジェクトの中でまた1つのファイルをアップロードするossサービス、直接サービスのアップロードファイルを呼び出すことに成功して、もしゲートウェイzulサービスを通って、中国語の名前のファイルをアップロードするならば、ファイル名は文字化けして、最終的にアップロードに失敗して、もし英語の名前のファイルをアップロードするならば、何の問題もありません.ゲートウェイzulが中国語を符号化処理している疑いがある.

問題解決のプロセス


この問題が発生した後、私個人の解決方法は以下の通りです.
  • 第一反応は文書を見ることであり、文書アドレス:cloud.spring.io/spring-clou…
  • では、ソリューションが提供されていないと考えているドキュメントをざっと見ました(実際には提供されていますが、ドキュメントが理解されていません).ソースコードを狂っても、解決策が見つからない.
  • Google検索、このIssue、githubを検索しました.com/spring-clou…

  • このオオカミが与えた解決策は、デフォルトのspring mvcではなくzul servletを使用してファイルをアップロードすることです.zul servletを使用するにはuriを要求し、前に「/zul」を付ける必要があります.
    image.png

    ソリューション


    まず、私のzulサービスの構成をリストします.
    server.port: 5000
    zuul:
       routes:
          oss-api:
          path: /oss/**
          serviceId: oss-service

    ossサービスはファイルをアップロードするインタフェースで、コードは以下の通りです.
    @RestController
    @RequestMapping("/file")
    public class FileUploadController {
        @PostMapping("/upload")  
        public RespDTO handleFileUpload(@RequestParam("file") MultipartFile file) {
            // 
            return RespDTO.onSuc(upLoadResult);
        }

    では、ゲートウェイを介して、アップロードファイルを呼び出すurlアドレスは以下の通りです.
    localhost:5000/oss/file/upload
    この場合、中国語のファイル名が表示されると、アップロードされたファイルのファイル名が失敗します.上記の大神の方法に従って、直接このuriに、前に「/zul」を付けて、要求の住所は以下の通りです.
    localhost:5000/zuul/oss/file/upload
    テストして、やはり合格して、中国語名のファイルをアップロードして文字化けして問題を解決します.

    私の公衆番号に注目してください。


    素晴らしい内容は見逃せません!
    forezp.jpg