先说说基本思路:
1、点击某个文件名称的连接时获取到文件序号,即保存在文件表中的主键序号;
2、通过AJAX将序号传入到后台,从文件表中查询文件信息,并使用openOffice将文档转成PDF文件;
3、将文件流输出到web页面。
再说说我本地的环境:
1、文件上传之后会在数据库中插入一条数据,用来记录文件的基本信息,如文件名称、保存路径、文件大小,上传人,上传时间等;
2、openOffice的安装前面的文章已经说得很清楚了,有需要的可以看一下!
3、我这里是点击文件名称时获取文件名称判断是不是doc文档,若是,就转PDF。若是图片或PDF文件就直接预览。否则,提示下载。
4、服务器端必须安装openOffice,客户端必须安装Adobe公司的PDF阅读器。若安装其他的PDF阅读器,如福昕,可能会出现不能预览只能下载的情况。
具体代码如下:
1、鼠标点击时获取文件信息并判断文件类型:
$("table>tbody>tr>td>a.fileDown").live("click",function(){ var fileid=jQuery.trim($(this).attr("fileId"));//文件序号 if(fileid!=""){ //1、判断文件是否为doc文件、pdf文件 var fileName = $(this).text();//获取文件名称 var sign = validateDocType(fileName); if(sign>0){//说明是可以打开的文件 //2、在新的选项卡中打开 buildTab("openDocInPdf.jsp?fid="+fileid+"&sign="+sign,fileName); return false; }else{ //不是word/pdf/图片文档,那么不打开进行提醒 if(confirm('当前文档不是word、pdf文档,不允许打开!\n是否进行下载?')){ fileDownload(fileid); } } } }); /** * 该方法通过文档的后缀名判断文件类型 * @param fileName:含有后缀名的文档 * @return sign:0-表示不是可以用pdf打开的文档 1-word文档 2-pdf文件 3-图片 * **/ function validateDocType(fileName){ if(isempty(fileName)){ return 0;} if((/(?:doc|docx)$/i.test(fileName))){ return 1; }else if((/(?:pdf)$/i.test(fileName))){ return 2; }else if((/(?:jpg|gif|png|jpeg|bmp)$/i.test(fileName))){ return 3; }else{ return 0; } }
2、openD