|
发表于 2012-12-21 13:15:55
|
显示全部楼层
- /**
- 首先我们来理解下关于文档的api
- 文档相关api都在这2个package下面
-
- package :com.justep.doc
- Class :Docs Doc DocUtils
- 其中Docs是一组Doc和合集也就是Doc的容器类 Doc对应的是文档对象DocUtils是文档相关的常用函数
- package :com.justep.doc.attachment
- Class: Attachments Attachment 等
- 这里面主要是和附件相关的,我们认为Attachment是Doc作为附件形式的对象,当然这个package里面还有和附件相关的其他类 比如文档关联(AttachmentDefine)
-
-
-
- 首先 :我们要明白一个概念
- 文档的root-path
- 在x5中文档服务器可以分布式部署的,也就是说你可以连接多个x5的文档服务器来保存文件,那么你这次这个文件放到哪个文档服务上里?
- 在x5中是通过root-path来标识,不同的文档服务器的标识root-path是不同的(关于这块的详细理解 请参考关于文档相关的视频或者文档)
- */
-
- /**
- * 1.这里我们先看看怎么上传一个文档
- * 首先我们建立个存储doc的容器
- */
- {
- Docs docs = new Docs();
- /**
- 然后我们在这个容器中新建一个文档
- 参数:sParentId 就是说你把这个文件展现到文档中心的哪个目录下
- 注意:真实物理文件存储位置是在DocServer配置的data目录中
- 不理解文档中心目录和物理位置关系的同学 请看www.justep.com视频
- */
- Doc doc = docs.addDoc("defaultDocNameSpace");
-
- File f = new File("c:/book.xls");
- /**
- * 现在doc还只是文档中心树上的一个节点没有关联上任何的物理文件
- * 调用upload方法,文件就传到DocServer中了 ,节点和物理文件也关联上了
- */
- doc.upload(f);
-
- /**
- * 成文,也就是说你这些操作要提交了,其中该保存数据库的的保存数据库,该生成上传日志的帮我记录好日志(SA_DocLog中有记录哦)
- * 不理解成文和保存的区别的看视频把
- */
- docs.createVersion();
- /**
- * 搞定 上传完了 现在你可以看看你刚才上传的文件的fileId是多少等等 都可以通过doc.getXXX
- String fileId = doc.getsFileID();
- System.out.println("产生的fileId是:"+fileId);
- */
- }
- /**
- * 2. 接下来我们看下载
- *
- */
- {
- Docs docs = new Docs();
- /**
- * query(docId, docPath, pattern, orderBy, custom)
- * docId 如果你只要一个文件 那么传你的docId
- * docPath 说的是你要查询文档中心那颗文档树上那个节点下的文档
- * pattern 你要查询那些信息 文档名字,文档大小 你就理解为sql中select部分把
- * orderBy 排序 我不用解释了把
- * custom 如果你还有自定意的过滤条件你就写把 你就理解为sql中wherer部分
- *
- * 下面我这行意思就是 我要拿/defaultDocNameSpace/0e29f353-c9d0-4bdc-8e48-647ceb9dbe62 这个节点下的所有文件 ,然后获取(get)其中docId为C581B536B8200001D99837D81ED4D2B0的doc
- *
- * 当然你要写成 docs.query("C581B536B8200001D99837D81ED4D2B0", "/defaultDocNameSpace/0e29f353-c9d0-4bdc-8e48-647ceb9dbe62", null, null, null)
- * 那么恭喜你已经理解了哈
- * 其实docs.query("C581B536B8200001D99837D81ED4D2B0", null, null, null, null)就行
- *
- */
- Doc doc = docs.query(null, "/defaultDocNameSpace/0e29f353-c9d0-4bdc-8e48-647ceb9dbe62", null, null, null).get("C581B536B8200001D99837D81ED4D2B0");
- File outPutFile =new File("c:/"+doc.getsDocName());
-
- doc.download(new FileOutputStream(outPutFile));
- /**
- * 去你C盘下看看把 是不是有个文件了
- */
- }
-
- /**
- * 3. 我们来看 修改后的保存 上传 成文
- */
- String docId = "C581B536B8200001D99837D81ED4D2B0";
- Docs docs = new Docs().query(docId, "/defaultDocNameSpace/0e29f353-c9d0-4bdc-8e48-647ceb9dbe62", null, null, null);
-
- Doc doc = docs.get(docId);
-
- /**
- * 上面 我不解释了
- * lock 这个很重要,你要修改文件 一定要先锁上 再改哦 ,要不你保证不住多人修改文件的情况,所以我不存数据库的只修改java对象。
- */
- DocUtils.lock(docId);
- doc.setsDocName("b.bin");
- //doc.getRow().setDateTime("sLastWriteTime",Timestamp);
- doc.upload(new File("c:/boot.ini"));
- /**
- * 熟悉第一步的你已经懂了
- * 这里 如果你addDoc的 也就是new的 就新建一个
- * 如果是query的 edit的 就 修改形成文档新版本
- *
- * 注意 修改的情况
- * 1. 修改文件内容 那么这个逻辑可以
- *
- * 2. 不修改文件只修改文件属性那么 需要设置
- * docs.setIsEditInfo(true);
- */
- docs.createVersion();
复制代码 |
|