Boas.
Estou a tentar alterar um script para me dar uma lista de ficheiros, em determinada directoria de um servidor FTP, como url.
Código (PHP):
Infelizmente, apesar de ter alterado o echo no loop, continua a formatar mal o url.
O url gerado e apresentado na página é este:
Código (HTML):
Mas, inspecionando com o firebug, consigo ver que na realidade o url aponta para
Código (HTML):
o que resulta em erro quando se clica para fazer download porque está a adicionar o siteurl do domínio onde o script está a correr.
O segundo erro é que apenas quero ter no link o nome do ficheiro, sem a directoria onde está alojado, mas não consigo "convencer" o echo a isso.
Sugestões?
Abraço
h.udo
Estou a tentar alterar um script para me dar uma lista de ficheiros, em determinada directoria de um servidor FTP, como url.
Código (PHP):
# the directory where ftp_rawlist starts
$startdir = "/videolan/x264/binaries/win32/";
# optional Datatypefilter (leave blank if not needed)
$suffix = "exe";
# ftp-login
$ftp_server = "ftp.fau.de";
$ftp_user = "anonymous";
$ftp_pw = "";
$ftp_mode = "";
$conn_id = ftp_connect($ftp_server);
ftp_login($conn_id, $ftp_user, $ftp_pw) OR die("<br>ftp-login failed");
ftp_pasv($conn_id, true);
#*********************************************************************
# create filelist (recursiv)
#*********************************************************************
$files = array(); # must be defined here
$files = raw_list("$startdir");
#*********************************************************************
# print result
#*********************************************************************
$i = 0; $count = count($files);
while ($i < $count):
# echo "$ftp_server$files[$i]<br>"; # echo original
echo '<a href="'.$ftp_server.''.$files[$i].'">'.$files[$i].'</a><br>';
$i++;
endwhile;
ftp_close($conn_id);
#*********************************************************************
# rawlist in recursive form (without parameter true!!!)
#*********************************************************************
function raw_list($folder)
{
Global $conn_id;
Global $suffix;
Global $files;
$suffixes = explode(",", $suffix);
$list = ftp_rawlist($conn_id, $folder);
$anzlist = count($list);
$i = 0;
while ($i < $anzlist):
$split = preg_split("/[\s]+/", $list[$i], 9, PREG_SPLIT_NO_EMPTY);
$ItemName = $split[8];
$endung = strtolower(substr(strrchr($ItemName,"."),1));
$path = "$folder$ItemName";
if (substr($list[$i],0,1) === "d" AND substr($ItemName,0,1) != "."):
# array_push($files, $path); # write directory in array if desired
raw_list($path);
elseif (substr($ItemName,0,2) != "._" AND in_array($endung,$suffixes)):
array_push($files, $path);
endif;
$i++;
endwhile;
return $files;
}
$startdir = "/videolan/x264/binaries/win32/";
# optional Datatypefilter (leave blank if not needed)
$suffix = "exe";
# ftp-login
$ftp_server = "ftp.fau.de";
$ftp_user = "anonymous";
$ftp_pw = "";
$ftp_mode = "";
$conn_id = ftp_connect($ftp_server);
ftp_login($conn_id, $ftp_user, $ftp_pw) OR die("<br>ftp-login failed");
ftp_pasv($conn_id, true);
#*********************************************************************
# create filelist (recursiv)
#*********************************************************************
$files = array(); # must be defined here
$files = raw_list("$startdir");
#*********************************************************************
# print result
#*********************************************************************
$i = 0; $count = count($files);
while ($i < $count):
# echo "$ftp_server$files[$i]<br>"; # echo original
echo '<a href="'.$ftp_server.''.$files[$i].'">'.$files[$i].'</a><br>';
$i++;
endwhile;
ftp_close($conn_id);
#*********************************************************************
# rawlist in recursive form (without parameter true!!!)
#*********************************************************************
function raw_list($folder)
{
Global $conn_id;
Global $suffix;
Global $files;
$suffixes = explode(",", $suffix);
$list = ftp_rawlist($conn_id, $folder);
$anzlist = count($list);
$i = 0;
while ($i < $anzlist):
$split = preg_split("/[\s]+/", $list[$i], 9, PREG_SPLIT_NO_EMPTY);
$ItemName = $split[8];
$endung = strtolower(substr(strrchr($ItemName,"."),1));
$path = "$folder$ItemName";
if (substr($list[$i],0,1) === "d" AND substr($ItemName,0,1) != "."):
# array_push($files, $path); # write directory in array if desired
raw_list($path);
elseif (substr($ItemName,0,2) != "._" AND in_array($endung,$suffixes)):
array_push($files, $path);
endif;
$i++;
endwhile;
return $files;
}
Infelizmente, apesar de ter alterado o echo no loop, continua a formatar mal o url.
O url gerado e apresentado na página é este:
Código (HTML):
<a href="ftp.fau.de/videolan/x264/binaries/win32/x264-r2389-956c8d8.exe">/videolan/x264/binaries/win32/x264-r2389-956c8d8.exe</a>
Mas, inspecionando com o firebug, consigo ver que na realidade o url aponta para
Código (HTML):
<a href="example.com/ftp.fau.de/videolan/x264/binaries/win32/x264-r2389-956c8d8.exe">/videolan/x264/binaries/win32/x264-r2389-956c8d8.exe</a>
o que resulta em erro quando se clica para fazer download porque está a adicionar o siteurl do domínio onde o script está a correr.
O segundo erro é que apenas quero ter no link o nome do ficheiro, sem a directoria onde está alojado, mas não consigo "convencer" o echo a isso.
Sugestões?
Abraço
h.udo