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

2801 ワード

最近SpringCloudを利用してマイクロサービスを構築している最中に、アップロードファイルがZuulゲートウェイ経由で転送されているのを発見した際に、アップロードファイル名の中国語文字化けしてファイルの書き込み操作に失敗し、ファイルアップロードに失敗したが、Zuul経由で転送されていない場合、ファイルアップロードは正常であるため、アップロード要求の符号化をZuulが処理したものと推測される.最終的にネット上で2つのソリューションが見つかりました.
シナリオ1.ファイルの要求パスをアップロードする前に文字列「zul」を追加し、この要求の符号化を処理しないことを宣言する.
/**
 *  poi ;
 * 
 * @author:JunZhou
 * @Company:LongZheng
 * @Email:[email protected]
 * @2018 1 16 @ 4:28:49
 */
@RestController
@RequestMapping("/poi")
@ClazzNote(desc = "excel ", resource = "input", modName = "poi")
public class POIController {
    @RequestMapping("/uploadExcel")
    @ServiceNote(desc = " excel", auth = ServiceNote.AUTH.CHECK)
    public ResObject singleFileUpload(MultipartHttpServletRequest request,
        RedirectAttributes redirectAttributes, HttpServletResponse response) {
        Integer stateCode = poiService.receiveUploadExcel(request, redirectAttributes, response);
        // ;
        ResponseMessage responseMessage = UploadStatusEnum.desicideUploadStatusBystateCode(stateCode, response);
        // 200;
        response.setStatus(UploadStatusEnum.UPLOAD_OK.getStateCode());
        return new ResObject(null,responseMessage);
    }

たとえば、現在のコードでは、要求パスは次のとおりです.
localhost:9090/oss/poi/uploadExcel
では、シナリオを採用して中国語の文字化けしを解決する要求経路は次のとおりです.
localhost:9090/zuul/oss/poi/uploadExcel
テストを経て、中国語の文字化けし問題は成功に解決した.
シナリオ2:シナリオ1に基づいて、バックエンドコードを変更するだけでなく、フロントエンドコードも変更するので、面倒です.そのため、より簡単なシナリオはzulのプロファイルに以下の属性を追加することです.
zuul.servlet-path=/

注意実ゲートウェイのプロファイルに追加されたものは、本人側ishiを経て問題も解決しました.
参考文章:1、SpringCloudはファイルをアップロードして、Zuulを通って、中国語のファイル名の文字化けして解決方法
2、zuul proxy file upload, file name is Chinese garbled #1385