Response 대상의 OutputStream 흐름 write 이후 생성된 그림이나 파일이 페이지에 나타나지 않습니다

여러분들이 쓴 블로그를 보면 품질이 너무 좋고 부럽습니다. 사람이란 귀천을 가리지 않고 박문도 마찬가지입니다. 어른들은 그들이 강요하는 부분을 잘 씁니다. 그러면 저는 개발 중의 작은 문제들을 보충해서 어른들이 고수를 데리고 놀면 저는 흰둥이를 데리고 놀겠습니다. 본론으로 돌아가겠습니다. 첫 번째 실제 프로젝트에서 QR코드를 생성하는 인터페이스를 썼는데 분명히 생성된 흐름이 대상에 들어갔습니다.왜 하필 페이지에 나타나지 않았는지, 두 번째로 프로젝트에서 다운로드 템플릿을 쓰는 인터페이스도 분명히 이미 흘렀다.왜 페이지에서 아무런 반응이 없습니까? 분명히 요청 상태가 200인데 해결 방법을 먼저 말씀하세요.그것은response 대상을 호출하는 flushBuffer () 방법으로 코드를 붙이는 것입니다
/**
     *  
     */
    @ApiOperation(value = " ")
    @ApiImplicitParam(paramType = "path", dataType = "String", name = "encrypted", value = " ", required = true)
    @RequestMapping(value = "/excel/template/{encrypted}", method = RequestMethod.GET)
    public void template(@PathVariable String encrypted) {
        GoodsSupplierExcelExportTemplateByStoreIdRequest request =
                new GoodsSupplierExcelExportTemplateByStoreIdRequest();
        request.setStoreId(commonUtil.getStoreId());
        String file = goodsSupplierExcelProvider.supplierExportTemplate(request).getContext().getFile();
        if(StringUtils.isNotBlank(file)){
            try {
                String fileName = URLEncoder.encode(" .xls", "UTF-8");
                HttpUtil.getResponse().setHeader("Content-Disposition", String.format("attachment;filename=\"%s\";filename*=\"utf-8''%s\"", fileName, fileName));
                HttpUtil.getResponse().getOutputStream().write(new BASE64Decoder().decodeBuffer(file));
                HttpUtil.getResponse().flushBuffer();
            }catch (Exception e){
                throw new SbcRuntimeException(CommonErrorCode.FAILED);
            }
        }
    }

요점은flushBuffer ()입니다.response에 버퍼가 있습니다.flushBuffer ()는 버퍼의 내용을 클라이언트 브라우저에 강제로 써서 표시하지 않으려고 해도 안 됩니다.이런 문제는 바로 갱신하기로 약속했다.고민할 필요 없어.

좋은 웹페이지 즐겨찾기