简易实现, txt文件显示在html上

来源:互联网 发布:mac鼠标滚轮设置 编辑:程序博客网 时间:2024/05/16 09:37
    为了应对客户的各种附件需要,office、pdf都通过第三方控件来处理(在线预览),而常见的text格式和imag,就要自己来实现。
text格式附件的预览,其实就是通过java io把附件数据读出来,然后把字符流返回给页面就可以了。
    比如,页面上可以用textarea控件来render附件的内容(string),如果没有太严格的权限限制(附件内容“完全只读”,需要禁用右键复制,黏贴等功能),我们只用textarea的readonly属性来控制是否只读即可。

    页面代码:
    <textarea data-dojo-attach-point="txtViewForm" style="font-ize: 15px; width: 100%;height: 100%"  readonly="readonly" >    this.txtViewForm.value = content;   /**     * 综合利用,在线预览 txt格式附件     * @param osName     * @param docId     * @throws EcmException     * @throws IOException     */    public static String downloadPrimaryAttach(String osName, String docId) throws EcmException, IOException {        EntityManager em = null;        try {            em = DaoManager.getEntityManager();            ObjectStore os = ObjectStoreHelper.getObjectStore(osName);            Document doc = P8DocumentDao.fetchDocumentById(os, docId);            Collection<ContentTransfer> collection = EngineCollectionUtils.c(doc.get_ContentElements(), ContentTransfer.class);            Iterator<ContentTransfer> it = collection.iterator();            ContentTransfer content = it.next();            InputStream in = content.accessContentStream();            StringBuffer sb = new StringBuffer();            //根据特征码,来判断文本文件编码格式,目前版本不支持全部格式转换            //在网络上查询资料,没有找到可用的覆盖面比较广的特征码集合。求各位大神分享。            byte[] head = new byte[3];             in.read(head);              String code = "GBK";            if (head[0] == -1 && head[1] == -2 )  {                  //txt编码为utf8                code = "UTF-8";             }else if (head[0] == -2 && head[1] == -1 ){                  //txt编码为Unicode                  code = "UTF-16";             }else if(head[0]==-17 && head[1]==-69 && head[2] ==-65){                   //txt编码为UTF-8                  code = "UTF-8";            }else if(head[0]==49 && head[1]==46 && head[2] ==-44){                  //[49, 46, -44]                  code ="GB2312";            }            Charset charset = Charset.forName(code);            //此处需要设置charset,以便很好的控制页面上文本的乱码问题。            InputStreamReader reader = new InputStreamReader(in,charset);            BufferedReader bfreader = new BufferedReader(reader);            String content1 = "";            while(content1 != null){                  content1 = bfreader.readLine();                  if(content1 == null){                      break;                  }                                   sb.append(content1.trim());               sb.append("\r\n");            }            return sb.toString();        } catch (Exception e) {            logger.error("downloadAttach error", e);            throw new EcmException(ErrorCode.ATTACHMENT_DOWNLOAD_ERROR, "downloadAttach error ", e);        } finally {            if (em != null) {                em.close();            }        }    }







原创粉丝点击