【问题标题】:Unable to open pdf file in new tab无法在新选项卡中打开 pdf 文件
【发布时间】:2018-11-28 07:33:30
【问题描述】:

我有一个要求,如果用户单击按钮,则在 html 页面中调用 javascript 函数,并且在该函数中,ajax 调用将从服务器获取 pdf 文件的内容

请找到下面的其余控制器

@RequestMapping(value = UriMapping.GET_PDF_PATH, method = RequestMethod.POST)
public @ResponseBody WebServiceResponse getPdfPath(HttpServletRequest req,
  @RequestParam String fileName, HttpServletResponse response) {
WebServiceResponse res = new WebServiceResponse();
FileInputStream fis = null;
try {
  if(!CommonUtil.isBlank(fileName)) {
    String filePath = FieldConstant.PDF_PATH + fileName;

    File f = new File(filePath);
    response.setContentType("application/pdf");
    response.setHeader("Content-disposition", "inline;filename=" + f.getName() );
    fis = new FileInputStream(f);
    DataOutputStream os = new DataOutputStream(response.getOutputStream());
    response.setHeader("Content-Length", String.valueOf(f.length()));
    byte[] buffer = new byte[1024];
    int len = 0;
    while ((len = fis.read(buffer)) >= 0) {
      os.write(buffer, 0, len);
    }
    fis.close();
  } else {
    res.setSucess(false);
    res.setReturnMessage("Something Went Wrong While opening file path !");
  }

} catch (Exception e) {
  LOGGER.error(e.toString());
  res.setSucess(false);
  res.setReturnMessage("Something Went Wrong While opening file path !");
}
LOGGER.info("Response" + res.toString());
return res;

}

FieldConstant.PDF_PATH 是所有 pdf 文件所在服务器的固定路径。

下面是客户端 jquery 函数,其中我使用 window.open() 函数在新选项卡中打开 pdf。

function test(count){
var fileName = pdfGlobal[count].name;
if(fileName != undefined && fileName != "") {
    var param = {
            "fileName" :fileName
    }
    $.ajax({
        url : '../content/getPdfPath',          
        type : 'post',
        dataType : "json",
        data : param,
        error : function(error,jqXHR, exception) {
            errorMessage(exception);
        },
        success : function(data) {              
            if (data) {
                window.open(data,'_blank');
            } else{
                errorMessage(data.returnMessage);
            }
        }
    });
}
}

我遇到如下解析错误

现在,正如错误提示,我在响应的第一位找到了 %!

请帮我解决这个问题。我知道这不是一个大问题,但我对出了什么问题感到困惑。根本找不到根本原因……

提前致谢。

【问题讨论】:

    标签: javascript java json spring pdf


    【解决方案1】:

    ajax 期望返回一个 JSON,不需要你使用 ajax,你可以使用 window.open,通过 get 发送文件名

    window.open('../content/getPdfPath?fileName='+fileName,'_blank');
    

    因此您必须将控制器更改为

    @RequestMapping(value = UriMapping.GET_PDF_PATH, method = RequestMethod.GET)
    

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      相关资源
      最近更新 更多