我有一个要求,在 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);
}
}
});
}
}
我正在解析下面的错误
现在,因为错误提示我在响应的第一位找到了%!
请帮助我...我知道这不是一个大问题,但我对出了什么问题感到困惑。根本无法找到根本原因......
提前致谢。
答案 0 :(得分:2)
ajax期望返回一个JSON,不需要您使用ajax,您可以使用window.open,通过get发送文件名
window.open('../content/getPdfPath?fileName='+fileName,'_blank');
所以您必须将控制器更改为
@RequestMapping(value = UriMapping.GET_PDF_PATH, method = RequestMethod.GET)