renderFile 不报404和500,文件也存在,前端就是获取不到文件

前端html里面写的一个按钮,然后是在js文件中写道按钮的click function,不能获得文件;

但是!把按钮换成<a> 去调用接口 就可以返回文件了......????

以下是在js中调用接口的问题:

调用controller的一个接口 最终返回的是 renderFile(file,"下载的文件名")

但是 不报404、500,Excel也生成到相对服务器的路径下面了,但就是前端收不到文件...附上配置和代码 还有运行结果、文件所在位置截图

QQ图片20181226195111.png---配置


blob.png  ---调用接口没有报错也没有文件


运行结果.jpg-----接口代码和控制台信息(控制台上的“导出成功”是创建file1后的一个测试输出)


文件存在.png-----文件存在位置,是tomcat运行时自动创建的项目目录





评论区

JFinal

2018-12-26 21:33

me.setBaseUploadPath(...) 与 me.setBaseDownloadPath(...) 这两个方法的参数如果使用了绝对路径,就会去指向项目之外的一个绝对路径

如果你的这些路径不是绝对路径,不要以 "/" 打头, 也不要以 "D:/" 这种盘符打头,会被认为是绝对路径

如果不是绝对路径,正确的配置方式为:
me.setBaseUploadPath("upload")
me.setBaseDownloadPath("download")

当然,上述两个配置是 jfinal 配置的默认值,可以删掉配置一样是这个值

知道了前面的 basePath,再回到问题本身就容易解决了,renderFile(file) 的规则是:
String finalFile = baseDownloadPath + file;

具体为啥出错,单步调试一下 FileRender 中的 render 方法一分钟内解决

杜福忠

2018-12-28 15:09

你js文件中写道按钮的click function 这段代码不会是 AJAX 吧? 以前不少人这样干。。。应该是直接window.location.href=文件地址

热门反馈

扫码入社