use json to encode the file list, should work better with filenames containing non-ascii characters
This commit is contained in:
parent
b0dbb2ac9d
commit
5da12fcfa1
|
@ -53,7 +53,10 @@ if($arguments['action']){
|
||||||
OC_FILES::get($arguments['dir'],$arguments['file']);
|
OC_FILES::get($arguments['dir'],$arguments['file']);
|
||||||
break;
|
break;
|
||||||
case 'getfiles':
|
case 'getfiles':
|
||||||
echo json_encode(OC_FILES::getdirectorycontent($arguments['dir']));
|
$max_upload=min(return_bytes(ini_get('post_max_size')),return_bytes(ini_get('upload_max_filesize')));
|
||||||
|
$files=OC_FILES::getdirectorycontent($arguments['dir']);
|
||||||
|
$files['__max_upload']=$max_upload;
|
||||||
|
echo json_encode($files);
|
||||||
break;
|
break;
|
||||||
case 'gettree':
|
case 'gettree':
|
||||||
echo json_encode(OC_FILES::getTree($arguments['dir']));
|
echo json_encode(OC_FILES::getTree($arguments['dir']));
|
||||||
|
@ -80,4 +83,19 @@ if($arguments['action']){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function return_bytes($val) {
|
||||||
|
$val = trim($val);
|
||||||
|
$last = strtolower($val[strlen($val)-1]);
|
||||||
|
switch($last) {
|
||||||
|
// The 'G' modifier is available since PHP 5.1.0
|
||||||
|
case 'g':
|
||||||
|
$val *= 1024;
|
||||||
|
case 'm':
|
||||||
|
$val *= 1024;
|
||||||
|
case 'k':
|
||||||
|
$val *= 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $val;
|
||||||
|
}
|
||||||
?>
|
?>
|
|
@ -41,18 +41,16 @@ OC_FILES.xmlloader=new OCXMLLoader();
|
||||||
|
|
||||||
OC_FILES.getdirectorycontent_parse=function(req){
|
OC_FILES.getdirectorycontent_parse=function(req){
|
||||||
var files=new Array();
|
var files=new Array();
|
||||||
var response=req.responseXML;
|
var json=eval('('+req.responseText+')');
|
||||||
OC_FILES.cache.files=Array();
|
OC_FILES.cache.files=Array();
|
||||||
if(response){
|
if(json){
|
||||||
var dir=response.getElementsByTagName('dir').item(0);
|
for(var name in json){
|
||||||
var fileElements=response.getElementsByTagName('file');
|
if(name!='__max_upload'){
|
||||||
if(fileElements.length>0){
|
|
||||||
for(index=0;index<fileElements.length;index++){
|
|
||||||
var file=new Array();
|
var file=new Array();
|
||||||
var attributes=Array('size','name','type','directory','date','mime');
|
var attributes=Array('size','name','type','directory','date','mime');
|
||||||
for(i in attributes){
|
for(var i in attributes){
|
||||||
var name=attributes[i];
|
var attributeName=attributes[i];
|
||||||
file[name]=fileElements.item(index).getAttribute(name);
|
file[attributeName]=json[name][attributeName];
|
||||||
}
|
}
|
||||||
files[file.name]=file;
|
files[file.name]=file;
|
||||||
}
|
}
|
||||||
|
@ -61,7 +59,7 @@ OC_FILES.getdirectorycontent_parse=function(req){
|
||||||
if(OC_FILES.cache.incomplete[OC_FILES.dir]){
|
if(OC_FILES.cache.incomplete[OC_FILES.dir]){
|
||||||
files=arrayMerge(files,OC_FILES.cache.incomplete[OC_FILES.dir]);
|
files=arrayMerge(files,OC_FILES.cache.incomplete[OC_FILES.dir]);
|
||||||
}
|
}
|
||||||
files['max_upload']=dir.getAttribute('max_upload');
|
files['max_upload']=json['__max_upload'];
|
||||||
if(OC_FILES.getdirectorycontent_callback){
|
if(OC_FILES.getdirectorycontent_callback){
|
||||||
OC_FILES.getdirectorycontent_callback(files);
|
OC_FILES.getdirectorycontent_callback(files);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +73,8 @@ OC_FILES.getdirectorycontent=function(dir,callback,refresh){
|
||||||
OC_FILES.getdirectorycontent_callback=callback;
|
OC_FILES.getdirectorycontent_callback=callback;
|
||||||
}
|
}
|
||||||
OC_FILES.xmlloader.setCallBack(OC_FILES.getdirectorycontent_parse);
|
OC_FILES.xmlloader.setCallBack(OC_FILES.getdirectorycontent_parse);
|
||||||
OC_FILES.xmlloader.load('files/get_files.php?dir='+encodeURIComponent(dir));
|
// OC_FILES.xmlloader.load('files/get_files.php?dir='+encodeURIComponent(dir));
|
||||||
|
OC_FILES.xmlloader.load('files/api.php?action=getfiles&dir='+encodeURIComponent(dir));
|
||||||
}else{
|
}else{
|
||||||
var files=OC_FILES.cache.files
|
var files=OC_FILES.cache.files
|
||||||
if(OC_FILES.cache.incomplete[OC_FILES.dir]){
|
if(OC_FILES.cache.incomplete[OC_FILES.dir]){
|
||||||
|
|
Loading…
Reference in New Issue