20170623

来源:互联网 发布:李乐的霍去病 知乎 编辑:程序博客网 时间:2024/06/03 15:55
while (rows.hasNext()){
Row row = rows.next();
String v = row.getString("fPictureName");
JSONArray ja = JSONArray.parseArray(v); 
for(int i=0;i<ja.size();i++){
JSONObject jsonObject=ja.getJSONObject(i); 
String docPaths =jsonObject.getString("docPath");
String docID = jsonObject.getString("docID");
//下载图片,获取图片的 docPath,docID,根据参数下载图片,一个字段存在多个图片,处理方法为迭代器
Docs docs = new Docs();
Doc doc = docs.query(null,docPaths, null, null, null).get(docID);
File outPutFile =new File("c:/"+doc.getsDocName());
try {
doc.download(new FileOutputStream(outPutFile));
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块




JSONArray jsonArray = new JSONArray();
JSONObject  obj = JSONObject.parseObject("{FileID:\""+fileId5+"\",DocPath:\""+docPath5+"\"}");
jsonArray.add(obj);
json = jsonArray.toString();

jieshou 
if (data.state) {
Qduan.deleteAllData();
var str = eval(data.response);
for (var i = 0; i < str.length; i++) {
Qduan.newData();
Qduan.setValue("strID", str[i].fID);
Qduan.setValue("strName", str[i].fName);
Detail.setValue("fUnitID", str[0].fID);
Detail.setValue("fUnitName", str[0].fName);
}
}
一、JSONObject和JSONArray的数据表示形式


JSONObject的数据是用 {  } 来表示的,


        例如:   { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null  }  


而JSONArray,顾名思义是由JSONObject构成的数组,用  [ { } , { } , ......  , { } ]  来表示


       例如:   [ {  "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" }  ,  {  "content" : null, "beginTime" : 1398873600000  "endTime" } ] ; 


        表示了包含2个JSONObject的JSONArray。


可以看到一个很明显的区别,一个最外面用的是 {  }  ,一个最外面用的是 [  ]  ;




二、如何从字符串String获得JSONObject对象和JSONArray对象


          JSONObject  jsonObject  = new JSONObject ( String  str);


         JSONArray jsonArray = new JSONArray(String    str  ) ;




三、如何从JSONArray中获得JSONObject对象


       大家可以把JSONArray当成一般的数组来对待,只是获取的数据内数据的方法不一样


                   JSONObject   jsonObject  =  jsonArray.getJSONObject(i) ;    






四、获取JSON内的数据


      int   mid= jsonObject.getInt ( "id" ) ;    //  这里的mid得到的数据就是123.


      String  mcourse=jsonObject.getString( " courseID") ;   // 这里的mcourse得到的数据就是huangt-test.

javascript 对象 
1 attachmentSimple.js修改
initUploader:function(){
                        var self = this;
                        var actionUrl = require.toUrl(this.actionUrl);
                        self.uploader = new Uploader(self.$domNode.find('.x-item-upload'),{
                actionUrl:actionUrl,
                compress: this.compress,
                accept:this.accept
            });
                        self.uploader.retCode = ''; // TODO: 增加retCode字段 2017-02-09


getFileUrl : function(realFileName,storeFileName,ownerID,operateType){
                var url = new justep.URL(this.actionUrl);
                url.setParam('storeFileName',storeFileName);
                url.setParam('ownerID',ownerID);
                url.setParam('realFileName',realFileName);
                url.setParam('operateType',operateType);
                url.setParam('retCode', ((this.uploader.retCode) ? this.uploader.retCode: '')); // TODO: 增加retCode字段参数 2017-02-09
                return require.toUrl(url.toString());
        },


addItem : function(realFileName,storeFileName,ownerID){
                    var items = this.getItems();
                    items.push({
                            storeFileName :storeFileName,
                            realFileName : realFileName,
                            retCode: (this.uploader.retCode) ? this.uploader.retCode: '' // TODO: 增加retCode字段 2017-02-09
                    });
                    this.bindData.setValueByID(this.bindRelation,JSON.stringify(items),ownerID);
            },


2 调用处对attachmentSimple做定制
/**
         * 自定义attachmentSimple1
         */
        Model.prototype.reInitAttachmentSimple = function(attachment) {
                var self = this;
                // 自定义图片显示路径
                attachment.previewPicture = function($object){
                //console.log("attachment.previewPicture");
                var url = $object.retCode.get();
                if(url){
                        return "url('"+url+"')";
                }
        };
        // 自定义图片下载路径
                attachment.downloadFile = function(realFileName,storeFileName,ownerID){
                //console.log("attachment.downloadFile");
                var val = attachment.bindData.getValueByID('att', ownerID);
                var data = [];
                if(val) {
                            try {
                                    data = JSON.parse(val);
                            } catch(e) {
                                    if(console){
                                            console.log("绑定的数据解析失败[value:"+val+"]",e);
                                    }
                                    data =[];
                            }
                            $.each(data, function(index, obj) {
                                    if (obj.storeFileName == storeFileName) {
                                            var fileApi = require("$UI/system/components/justep/docCommon/fileApi");
                                        var url = obj.retCode;
                                        url && fileApi.browse(url);
                                        return false;
                                    }
                            });
                    }
        };
        // 增加删除文件事件
        attachment.removeItemByStoreID = function(storeFileName, ownerID){
                    var items = attachment.getItems(ownerID);
                    var delItem = null;
                    if(items) {
                            for(var i =0; i<items.length; i++){
                                    if(items[i].storeFileName == storeFileName){
                                            delItem = items.splice(i,1);
                                            break;
                                    }
                            }
                    }
                    attachment.bindData.setValueByID(attachment.bindRelation, JSON.stringify(items), ownerID);
                    // -- 判断是否达到图片上限 -- //
                        var attVal = attachment.bindData.getValue("att");
                        if (attVal && $.parseJSON(attVal).length < 5) {
                           $('.x-item-upload.x-upload-hide').removeClass('x-upload-hide'); // 显示上传
                        }
                    /*if (delItem) { // TODO: 这里添加删除事件
                            var url = ;
                            $.ajax({
                                url:url,
                                cache:false,
                                async:false
                        }).fail(function(){
                                throw "delFile error";
                        });
                    }*/
            }
        };


//判断只要特定的文件类型可以上传
                uploader.on('onFileSelected',function(event){
                        var fileType = event.file.type;
                        //自己判断fileType,如果不符合条件用cancel为true终止选择文件
                        if(fileType != "image/jpeg" && fileType != "image/png" && fileType != "image/gif"){
                                event.cancel = true;
                                project.alert("请上传图片!");
                        }
                        //限制大小
                        $.each(event.files, function(i, file) {
                                if (file.size > 10485760) {// 10M
                                    project.alert("上传的文件大小不能超过10MB");
                                    event.cancel = true;
                                    return;
                                }
                        });
                        //限制文件个数
                        var preNum = $.parseJSON(data.getValue("att")).length; // 默认给att赋值“[]”
                        var curNum = event.files.length;
                        if (preNum + curNum > 5) {
                                project.alert("最多上传5个文件!");
                            event.cancel = true;
                            return;
                        }
                });
                uploader.un('onSuccess');
                uploader.on('onSuccess', function(event){
                        var statusCode = event.response.statusCode;
                        var message = event.response.message;
                        if (statusCode == '200') {
                                uploader.retCode = message;
                                
                                // -- 执行原始组件的onSuccess回调方法 -- //
                                attachmentSimple1.$domNode.find('.x-doc-process-bar').hide().css('width','0%');
                                var _data = {
                                        source: attachmentSimple1,
                                        data:event.data,
                                        fileName:event.data.fileName
                                };
                                attachmentSimple1.fireEvent('onSuccess',_data);
                                attachmentSimple1.changeState("upload");
                                attachmentSimple1.addItem(_data.data.fileName,_data.data.storeFileName,_data.data.ownerID);
                                
                                // -- 判断是否达到图片上限 -- //
                                var attVal = data.getValue("att");
                                if (attVal && $.parseJSON(attVal).length >= 5) {
                                   $('.x-item-upload').addClass('x-upload-hide');//隐藏上传
                                }
                        } else {
                                project.alert('上传图片失败!');
                                // 重置进度条
                                attachmentSimple1.$domNode.find('.x-doc-process-bar').hide().css('width','0%');
                        }
                });
[{"docID":"C79279A4C000000148FC65DE8BA01E8F","docName":"timg (12).jpg","size":"33055","docPath":"/defaultDocNameSpace","fileID":"1163-defaultDocNameSpace","time":"2017-06-19T13:56:41.197Z"}]
[{"docID":"D96E64B69BE04770B264661634922929","docName":"timg (12).jpg","size":"44111.0","docPath":"/defaultDocNameSpace","fileID":"1164-defaultDocNameSpace","time":"2017-06-19 13:57:26.784"}]
/UI2/system/service/doc/common/uploadDoc.j?dochost=http://192.168.1.100:8088/DocServer/repository/file/view/1166-defaultDocNameSpace/last/content?key=63c386a3db4f2e240d7ab67834d4c2949d566a602463c1be9d7726a84ea5a603f354cb841844dc7f16fc336669bb60036eaaae7560bd4534e3e4fc011bc5b2546d8e7b8609a880a6747255a2f2de8e2ecac810cc37316d3d27838561f27a224495e99a9882be69a8592e8d14c15ee476
[{"docID":"C7927B401EC000017FDD1B4D13748320","docName":"timg (19).jpg","size":"2034973","docPath":"/defaultDocNameSpace","fileID":"1178-defaultDocNameSpace","time":"2017-06-19T14:24:47.012Z"}] 
http://127.0.0.1:8080/x5/UI2/v_e4032137edeb42309ed97346fd303a64l_zh_CNs_d_m/system/service/doc/common/uploadDoc.j?dochost=http://192.168.1.100:8088/DocServer/repository/file/view/1178-defaultDocNameSpace/last/content?key=63c386a3db4f2e240d7ab67834d4c2949d566a602463c1be9d7726a84ea5a603f354cb841844dc7f16fc336669bb60036eaaae7560bd45342575a5042b32c8e66d8e7b8609a880a6747255a2f2de8e2ecac810cc37316d3d27838561f27a224448b79b2280b97522dd4306f3c0d248f7
 var url = "";
var name = "";
//遍历JSON
if(jsonList.length>0){
for(var i = 0;i<jsonList.length;i++){
var docPath = jsonList[i]["docPath"];
var fileID  = jsonList[i]["fileID"];
var docName = jsonList[i]["docName"];
var docID   = jsonList[i]["docID"];
name = docName.split(".")[i];


url = DocUtils.InnerUtils.getdocServerAction({
"docPath":docPath,
urlPattern:"/repository/file/view/"+fileID+"/last/content",
isFromAction :false,
context: this.getContext(),
useCookie : false
});
//调用API
url =  url.indexOf(window.location.protocol) < 1 ? url : window.location.protocol + "//" + window.location.host + url;
var  a= "/repository/file/view/"+fileID+"/last/content";
data.setValue("fFile", url);
data.setValue("fZBID",fBZID);
// data.refreshData();
// alert("已经上传了");
http://127.0.0.1:8080/x5/UI2/v_ed07d83a111e44b4b9087e9e81be8a8al_zh_CNs_d_m/system/service/doc/common/uploadDoc.j?dochost=http://192.168.1.100:8088/DocServer/repository/file/view/1135-defaultDocNameSpace/last/content?key=63c386a3db4f2e240d7ab67834d4c2949d566a602463c1be9d7726a84ea5a603f354cb841844dc7f16fc336669bb60036eaaae7560bd4534b541391e4bf825286d8e7b8609a880a6747255a2f2de8e2ecac810cc37316d3d27838561f27a2244734673618129b79a2801c4fed38c967f




[{"docID":"C7926DEC5FD000014C5A4F1086801E27","docName":"timg (18).jpg","size":"133046.0","docPath":"/defaultDocNameSpace","fileID":"1156-defaultDocNameSpace","time":"2017-06-19 10:31:53.767"}]




[{
"docID":"C7926DF104700001896711669DEBB9B0",
"docName":"timg (18).jpg",
"size":"133052.0",
"docPath":"/defaultDocNameSpace",
"fileID":"1157-defaultDocNameSpace",
"time":"2017-06-19 10:32:12.99"

}]


[{

"docID":"C7926E0633A0000126681FD01EA010CA",
"docName":"timg (18).jpg",
"size":"133044.0",
"docPath":"/defaultDocNameSpace",
"fileID":"1158-defaultDocNameSpace",
"time":"2017-06-19 10:33:39.046"


}]




/**
                 首先我们来理解下关于文档的api
                 文档相关api都在这2个package下面
                 
                 package :com.justep.doc
                 Class :Docs Doc DocUtils文档相关的常用函数
                 package :com.justep.doc.attachment
                 Class: Attachments Attachment 等
                 其中Docs是一组Doc和合集也就是Doc的容器类 Doc对应的是文档对象DocUtils是
                 这里面主要是和附件相关的,我们认为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();

Detail
TE_UnitProjectInfo 区段桩
TE_WorkProducerInfo 工序


Model.prototype.TE_WorkSubmitAAfterNew = function(event) {
var TE_WorkSubmitA = this.comp("TE_WorkSubmitA");
biz.Request.sendBizRequest({
"context" : this.getContext(),
"action" : "getTeamResponser",
"parameters" : "",
"callback" : function(data) {
// data.ignoreError 是否忽略默认的异常处理,默认值true
data.ignoreError = false;
// data.state 请求返回状态,标识请求是否执行成功
if (data.state) {
if (data.response) {
TE_WorkSubmitA.setValue("fClassID", data.response.split(",")[0]);
TE_WorkSubmitA.setValue("fClassName", data.response.split(",")[1]);
TE_WorkSubmitA.setValue("fProjectID", fProjectID);
TE_WorkSubmitA.setValue("fProjectCode", fProjectCode);
TE_WorkSubmitA.setValue("fProjectName", fProjectName);
TE_WorkSubmitA.setValue("fUnitType", "区段");
}
}
}
});
};
/////
strNamestrID
// 类型改变时 获取项目下所有桩或者区段
Model.prototype.TE_WorkSubmitAValueChanged = function(event) {
var TE_WorkSubmitA = this.comp("TE_WorkSubmitA");
var TE_WorkSubmitDA = this.comp("TE_WorkSubmitDA");
var QData = this.comp("QData");
var cData1 = this.comp("cData1");
var cData2 = this.comp("cData2");
if (event.col == "fUnitType") {
TE_WorkSubmitA.setValue("fUnitID", "");
TE_WorkSubmitA.setValue("fUnitName", "");
var params = new biz.Request.ActionParam();
params.setString("fProjectID", TE_WorkSubmitA.getValue("fProjectID"));
params.setString("fClassID", TE_WorkSubmitA.getValue("fClassID"));
params.setString("type", event.value);
// 调用动作
var me = this;
biz.Request.sendBizRequest({
"context" : this.getContext(),
"action" : "getQuDuanOrZhuang",
"parameters" : params,
"callback" : function(data) {
// data.ignoreError 是否忽略默认的异常处理,默认值true
data.ignoreError = false;
// data.state 请求返回状态,标识请求是否执行成功
if (data.state) {
QData.deleteAllData();
var str = eval(data.response);
for (var i = 0; i < str.length; i++) {
QData.newData();
QData.setValue("strID", str[i].fID);
QData.setValue("strName", str[i].fName);
TE_WorkSubmitA.setValue("fUnitID", str[0].fID);
TE_WorkSubmitA.setValue("fUnitName", str[0].fName);
}
}
}
});
}
if (event.col == "fUnitID") {
TE_WorkSubmitA.setValue("fSubSectionID", "");
TE_WorkSubmitA.setValue("fSubSection", "");
var params = new biz.Request.ActionParam();
params.setString("currID", event.value);
params.setString("parent", "");
// 调用动作
var me = this;
biz.Request.sendBizRequest({
"context" : this.getContext(),
"action" : "getSubSection",
"parameters" : params,
"callback" : function(data) {
// data.ignoreError 是否忽略默认的异常处理,默认值true
data.ignoreError = false;
// data.state 请求返回状态,标识请求是否执行成功
if (data.state) {
cData1.deleteAllData();
var str = eval(data.response);
for (var i = 0; i < str.length; i++) {
cData1.newData();
cData1.setValue("strID", str[i].fID);
cData1.setValue("strName", str[i].fName);
TE_WorkSubmitA.setValue("fSubSectionID", str[0].fID);
TE_WorkSubmitA.setValue("fSubSection", str[0].fName);
}
}
}
});
}
if (event.col == "fSubSectionID") {
TE_WorkSubmitA.setValue("fSubItemID", "");
TE_WorkSubmitA.setValue("fSubItem", "");
var params = new biz.Request.ActionParam();
params.setString("currID", TE_WorkSubmitA.getValue("fUnitID"));
params.setString("parent", event.value);
// 调用动作
biz.Request.sendBizRequest({
"context" : this.getContext(),
"action" : "getSubSection",
"parameters" : params,
"callback" : function(data) {
// data.ignoreError 是否忽略默认的异常处理,默认值true
data.ignoreError = false;
// data.state 请求返回状态,标识请求是否执行成功
if (data.state) {
cData2.deleteAllData();
var str = eval(data.response);
for (var i = 0; i < str.length; i++) {
cData2.newData();
cData2.setValue("strID", str[i].fID);
cData2.setValue("strName", str[i].fName);
TE_WorkSubmitA.setValue("fSubItemID", str[0].fID);
TE_WorkSubmitA.setValue("fSubItem", str[0].fName);
}
}
}
});
}
if (event.col == "fSubItemID") {
// 获取工序基本设置 把工序插入从表
TE_WorkSubmitDA.refreshData();
if (TE_WorkSubmitDA.getCount() == 0) {
var params = new biz.Request.ActionParam();
params.setString("currID", TE_WorkSubmitA.getCurrentRowID());
params.setString("name", TE_WorkSubmitA.getValue("fSubItem"));
params.setString("ID", TE_WorkSubmitA.getValue("fSubItemID"));
// 调用动作
biz.Request.sendBizRequest({
"context" : this.getContext(),
"action" : "insertWorkSubmitD",
"parameters" : params,
"callback" : function(data) {
// data.ignoreError 是否忽略默认的异常处理,默认值true
data.ignoreError = false;
// data.state 请求返回状态,标识请求是否执行成功
if (data.state) {
TE_WorkSubmitDA.refreshData();
}
}
});
}
}
if (event.col == "fWorkFinishState") {
TE_WorkSubmitDA.each(function(param) {
TE_WorkSubmitDA.setValue("fWorkFinishState", event.value, param.row);
});
}
};

接受String类型赋值给变量
if(data.state){
if(data.response){
debugger;
fProjectID = data.response.split(",")[0];
fProjectCode= data.response.split(",")[1];
fProjectName =data.response.split(",")[2];
alert(fProjectName);

变量等于 赋值要用2个引号
= '"+currenttime+"'"


select m.fProjectID as fProjectID,m.fProjectCode as fProjectCode,m.fProjectName as fProjectName,case when t.fProgress is null then 0 else fProgress end as fProgress from TE_MyProjectInfo m optional join TE_ProjectInfo t on t = '8371D11AB0964B5D8392E7C89EE68580' where m.fIsDefault='是' and m.fPersonName='system'



3167DD2D4F644174A826EAFE9B96F0B0
主从表关联
//遍历JSON
if(jsonList.length>0){
for(var i = 0;i<jsonList.length;i++){
var docPath = jsonList[0]["docPath"];
var fileID  = jsonList[0]["fileID"];
var docName = jsonList[0]["docName"];
var docID   = jsonList[0]["docID"];

//路径
// debugger;
// var data = this.comp("Detail");
// var fPictureName = data.getValue("fPictureName");
// var jsonList = eval("("+fPictureName+")");
// var  id = data.getCurrentRowID();
// var url = "";
// var name = "";
// //遍历JSON
// if(jsonList.length>0){
// for(var i = 0;i<jsonList.length;i++){
// var docPath = jsonList[0]["docPath"];
// var fileID  = jsonList[0]["fileID"];
// var docName = jsonList[0]["docName"];
// var docID   = jsonList[0]["docID"];
// name = docName.split(".")[0];
// url = DocUtils.InnerUtils.getdocServerAction({
// "docPath":docPath,
// urlPattern:"/repository/file/view/"+fileID+"/last/content",
// isFromAction :false,
// context: this.getContext(),
// useCookie : false
// });
// //调用API
// debugger;
// url1 =  url.indexOf(window.location.protocol) < 1 ? url : window.location.protocol + "//" + window.location.host + url;
// var  a= "/repository/file/view/"+fileID+"/last/content";
// data.setValue("fFile", url);
// data.setValue("fZBID",fBZID);
// data.saveData();
// data.refreshData();
// alert("已经上传了");
var data = this.comp("Detail");
var  id = data.getCurrentRowID();
alert(id);
//调用动作
var params = new biz.Request.ActionParam();
params.setString("docPath",docPath);
params.setString("docId",docID);
params.setString("ID",id);
var me = this;
biz.Request.sendBizRequest({
"context" : this.getContext(),
"action" : "PictureWatermarkAction",
"parameters" : params,
"callback" : function(data) {
data.ignoreError = false;
if (data.state) {
//
}
}
});
};

/**
 
                 首先我们来理解下关于文档的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, "/e48-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, "/defe62", 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();








以上代码 主要用来介绍api 里面有写地方需要理解代码后自己注意,千万不要照抄
 比如docs.get(docId); 你应该考虑 docId不再docs里面后返回的doc是null的情况
 lock的时候 已经有别人锁上了 根据返回值来判断是否已经锁上的情况。
 






如果要在java中获取url需要调用
 com.justep.doc.DocAdapter.queryHost(Boolean isHttps, String docPath,
    String urlPattern, Boolean isFormAction);
 比如你的已知数据是
 [{"docID":"C490A0A0-F170-0001-3E32-119C17711D64","docName":"MN-2-011-31.pdf","size":522021,"fileID":"2313-DOC","docPath":"/A226C50E-2EBD-4E05-B16B-5074B3149AD0"}]
 那么isHttps传false,
 docPath就是/A226C50E-2EBD-4E05-B16B-5074B3149AD0
 urlPattern分为:
   上传  /repository/file/cache/upload
   下载    /repository/file/download
   参看    /repository/file/view
    officeViewer组件上传的office文件的url    /repository/file/cache/office/
   附件上传的临时文件的提交   /repository/file/cache/commit   (一般和数据库的保存事件在一个事务中完成)
 isFormAction是考虑到如果前台采用form提交的时候会有跨域访问需要特殊处理的时候的参数,如果你不理解建议你传true
 以上方法是带权限的,也就是说你想拿这个url那么当前登录人在文档中心必须有这个文件的相应权限,如果你不想关注文档中心的权限可以调用函数queryNoPermissionHost。
 
如果要在js中获取url :
 justep.Doc.getdocServerAction(docPath, urlPattern, isFormAction);
 参数我就不解释了和上面一样。调用上面函数需要引用js文件 system\service\doc\docUtil.js
 [
 {
 "storeFileName":"C79039E3C480000149701590D87C1B74",
 "realFileName":"u=397047316,2841163867&fm=26&gp=0.jpg",
 "ownerID":"1"}
 ]
 
 
 
 fileID = doc.getsFileID();
                        docID = doc.getsID();
                        docName = doc.getsDocName();
                        docPath = doc.getsDocPath();
                        size = doc.getsSize().toString();

                        docValue = "[{\"docID\":\"" + docID + "\",
\"docName\":\"" + docName + "\",
\"size\":\"" + size + "\",
\"fileID\":\"" + fileID+ "\",
\"docPath\":\"" + docPath + "\",
\"time\":\"" + new java.sql.Timestamp((new java.util.Date()).getTime()) 
+ "\"}]";

while (iterator.hasNext()){
// String key = iterator.next();
// if (key.equals("carinfo")){
// JSONArray jsonArray = jsonObject1.getJSONArray(key);
// List<Hashtable< String, Object>> carinfo = new ArrayList<>();
// for (int i =0 ; i< jsonArray.length() ;i++){
// Hashtable<String, Object> info = new Hashtable<>();
// JSONObject jsonObject2 = jsonArray.getJSONObject(i);
// Iterator< String> iterator1 = jsonObject2.keys();
//下载
 
 
 
 
 
 
 

原创粉丝点击