OpenFile文件选取

2018-02-07 14:51 更新
  • 函数原型

/* 文件选取

 * @string    type     操作类型,可用值open,save,saveto;默认为open;

 * @string    title   窗体标题,打开、保存、另存为;

 * @object    exts     可选取的文件类型,不是要求的类型不显示;

 * @object    params   回调参数,一些需要传递给回调函数的参数可用通过此参数;bz='all':所有盘;bz='':仅本地盘;bz='盘标志符(如baiduPCS)' 只打开此标志符的盘(百度网盘)

 * @array     topfid   打开的目录,是从要打开的目录到根目录的fid数组;

 * @function  callback 回调函数;

*/

function OpenFile(type,title,exts,params,callback,topfid)

{

_config.selectall.icos=[];

if(type!='open' && type!='save' && type!='saveto') type='open'; 

if(!params) params={};

if(type=='save' || type=='saveto') params.multiple=false; //保存时不能多选

if(_window.windows['_W_openfile']) _window.windows['_W_openfile'].Close();

var win=_window.OpenFile(type,exts,title,params,topfid,windows['OpenFile'].features);

win.OnOK = function(){

var name=document.getElementById('file_select_input').value;

if(type=='open'){ //打开文件

if(document.getElementById('file_select_input').value=='' ){

Alert('请选择文件!');

return ;

}else if(checkeURL(name)){//为网络地址时

                                  params.multiple=false;

  params.ishref=1;

  var data={'params':params,'icodata':{'url':name,'name':name.substr(name.lastIndexOf('/')+1)}};

 

}else if(_file.selected.length<1){//未选择文件

Alert('请选择文件!');

return ;

}else{ 

var data={};

var icosdatas=[];

for(var i in _file.selected){

icosdatas[i]=_config.sourcedata.icos[_file.selected[i]];

}

data.params=params;

if(params.multiple) data.icodata=icosdatas; //多选时返回数组

else data.icodata=icosdatas[0];  

data.position=_config.sourcedata.folder[win.fid].path;

}

}else if(type=='save' ||type=='saveto'){//保存

var data={};

name=name.replace(/"/g,'');

//假如选择了文件 ,提示是否覆盖保存;

if(name && _file.selected.length>0){

if(confirm(_lang.cover_confirm+'"'+name+'?"')){

data.icodata=_config.sourcedata.icos[_file.selected[0]];

}else{

return ;

}

}

if(document.getElementById('file_select_input').value=='' ){

Alert('请输入文件名称,或选择已有的文件!');

return ;

}

data.filecode=document.getElementById('file_code_select').value;

data.params=params;

data.name=name;

data.position=_config.sourcedata.folder[win.fid].path;

}

if( typeof callback=='function') callback(data);

win.Close();

}

win.OnCANCEL = function(){

win.Close();

}

};


  • 详细参数说明:

  1. type:打开文件类型,可用值(“open”打开,“save”保存,“saveto”另存为);

  2. title: 文件窗口标题;

  3. exts:定义要打开的文件类型;

          结构如:


{

  “image”:['图像文件(*.JPG,*.JPEG,*.PNG,*.GIF)',['JPG','JPEG','PNG','GIF'],’selected’],

  ”video”:['视频',['VIDEO','WAV','MID','RM','RMVB','RTSP','FLV','SWF','ASF','ASX','WMV','MMS','AVI','MPG','MPEG','MOV'],”]

};

exts的每条将在文件窗体中以下拉列表方式显示;

exts的每条数组的说明:

                     0:显示的文本;
                     1:定义的扩展名数组,只有此扩展名数组内的文件才会显示,数组为空,不限制扩展名;特殊扩展名有(VIDEO,IMAGE,LINK,ATTACH,APP,DZZDOC);各项请使用大写;
                     2:值为“selected”,表示此项选中;

4. params:带入的参数,此对象将会放到回调函数的参数data.params;

结构为对象:如{multiple:true,cmd:’insertvideo’,bz:'', ... } ;

multiple:true|flase   通知文件窗体是否允许多选;

bz: 盘标志符,bz='all':所有盘;bz='':仅本地盘 ;bz='baiduPCS' 只打开百度网盘;


5. callback:回调函数;唯一参数为data;

data的数据结构

{

icosdata:[object,...] || object      multiple:true时  [object,...];

params :params                        接口中带入的params参数原封不动带回,以供回调函数使用;

position:                                    选择的文件所在的目录的fid;

filecode:UTF-8||GBK||BIG-5       用户选择的要保存的文件的编码;默认为UTF-8,此项只有在type为save或saveto时带回;

name:如xxxx.txt                      用户输入的文件名和文件后缀名;

}

6. topfid: 默认打开的目录,是从要打开的目录到跟目录的fid数组;

7. 完整示例:

OpenFile(‘open’,'打开’,{“image”:['图像文件(*.JPG,*.JPEG,*.PNG,*.GIF)', ['JPG','JPEG','PNG','GIF'],’selected’],”video”:['视频', ['VIDEO','WAV','MID','RM','RMVB','RTSP','FLV','SWF','ASF','ASX','WMV','MMS','AVI','MPG','MPEG','MOV'],”]},{cmd:’insertimg’,multiple:true,bz:''},function(data){
        acceptdata(data); //根据需要自定义
});

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号