前两天根据领导要求,要实现对上传文件在web的预览,上传文件格式包括word,excel,ppt,pdf等。自己因为没有做过,所以上网查资料,基本都是将上传文件经过转化后再呈现。基本上的几种方案:openOffice+swfTools+FlexPaper将上传文件转pdf转swf,借助FlexPaper前端组件来实现;或将上传文件转pdf再借助pdf2htmlEX转为html来显示,也可以借用一些第三方插件,如pageOffice,SOAOffice,webOffice,officeweb365,office365等。一般都是需要收费的,officeweb365有破解版,不过好像破解版有限制,上传文件不超过2M,每次上传不超过500次,office365是要架设特定的服务器才可以。当然,也可以直接借助一些公司比较成熟的接口,比如我在测试时借用永中的接口,在main方法中提供一个上传文件的url,调用永中的接口后,就可以返回来一个在web端了浏览上传文件的html的静态地址。
public static void main(String[] args) {
//文件上传转换,获取返回数据
//调用了永中的接口,实现了对上传文件的在线预览,此方法仅适合的文档类型:word,excel,ppt(chm.dll,pdf格式的文件无法转化)
String convertByFile = SubmitPost("http://dcs.yozosoft.com:80/upload",
"C://Users//Administrator//Desktop//ES//xxxx.docx", "1");
JSONObject obj = JSONObject.fromObject(convertByFile);
//JSONObject obj = JSONObject.parseObject(convertByFile);
if ("0".equals(obj.getString("result"))) {// 转换成功
String urlData = obj.getString("data");
urlData = urlData.replace("[\"", "");//去掉[
urlData = urlData.replace("\"]", "");//去掉]
//最后urlData是文件的浏览地址
//此处输出的路径,即在浏览器中预览上传文件的url。
System.out.println(urlData);//打印网络文件预览地址
} else {// 转换失败
System.out.println("转换失败");
}
}
最终输出来的http://dcs.yozosoft.com:8000/2018/07/19/MTgwNzE5NTcwMTAyMDQy.html,就是web端浏览的地址。
当然,也可以用第一种,将上传文件转化为pdf,swfTools转化为swf,借助FlexPaper前端插件来展示,我的项目中先用了这个方法来呈现(缺点是:上传word文档,无法提取出来目录)最终的效果如下:
需要注意的是:使用了FlexPaper插件,除了将该插件所需要的js在jsp中引入外,FlexPaperViewer.swf要放对位置。我的jsp就是在根目录下,因此我也将其放在根目录下执行成功