OpenFile文件选取
函数原型
/* 文件选取
* @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();
}
};
详细参数说明:
type:打开文件类型,可用值(“open”打开,“save”保存,“saveto”另存为);
title: 文件窗口标题;
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); //根据需要自定义
});
更多建议: