자바 상용 팁: 파일 을 다운로드 할 때 파일 이름 중국어 난동

파일 을 다운로드 할 때 중국어 난 장 판 은 매우 흔히 볼 수 있 는 문제 이다. 이것 은 처음 이 아니 지만, 나 는 그것 이 마지막 이 기 를 바란다.
이것 은 사람 을 매우 골 치 아 프 게 하 는 문제 이다. 분명히 백 스테이지 에 있 는 파일 이름 이 정상 인 데 왜 다운로드 한 후에 파일 이름 이 엉망 이 되 었 을 까?
왜 난 장 판이 되 었 는 지: 브 라 우 저의 인 코딩 과 백 엔 드 의 인 코딩 이 일치 하지 않 기 때문에 화성 인 (\ # \ #) 과 수성 인 (* *) 이 사투리 로 말 하 는 것 과 같 습 니 다. 결 과 는 아무 도 알 아 듣 지 못 할 것 입 니 다.
그러면 의사 소통 을 할 때 언어 가 통 하지 않 는 문 제 를 어떻게 해결 할 것 인가? 그러면 하나의 통 일 된 언어 [UTF - 8] 를 쌍방의 의사 소통 언어 로 사용 하 자.
다운로드 방법 첨부
@ApiOperation("MinIO    ")
@GetMapping("/generateFileDown")
public BaseRetBean generateFileDown(
        @ApiParam(value = "    ",required = true) @RequestParam(value = "id",required = true) String id,
        HttpServletResponse response
) throws Exception {
    BaseRetBean baseRetBean = new BaseRetBean();

    //        
    GmFileBean gmFileBean = workOrderService.queryFileById(id);

    if (gmFileBean==null) {
        baseRetBean.setRet(0);
        baseRetBean.setMsg("    ");
        return baseRetBean;
    }
    String fileName = gmFileBean.getFile_name();
    //      
    String bucketName="work-order";
    InputStream inputStream = minioUtil.getObject(bucketName,gmFileBean.getData());

    //     
    if (inputStream == null) {
        baseRetBean.setRet(0);
        baseRetBean.setMsg("    ");
        return baseRetBean;
    }

    byte[] data = inputStreamToByteArray(inputStream);

    try {
        //      
        response.reset();
        //     HTTP         
        response.addHeader("Content-Length", "" + data.length);
        // Content-disposition           ,     encode  
        response.setHeader("Content-Disposition", "attachment; filename=\""+ URLEncoder.encode(fileName,"utf-8")+"\"");
        //             
        response.setContentType("application/"+gmFileBean.getType()+";charset=UTF-8");

        IOUtils.write(data, response.getOutputStream());
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    baseRetBean.setRet(1);
    baseRetBean.setMsg("    ");
    return baseRetBean;
}

 

좋은 웹페이지 즐겨찾기