FTP com Progress Bar
Bom dia Srs.
Tenho a seguinte classe:
CODE
class simpleFTP {
const LOGIN = "login";
const SENHA = "senha";
const FTP = "ftp.site.com.br";
const HOME = "/home";
protected $_conn;
[http://forum.imasters.com.br/public/style_emoticons/](http://forum.imasters.com.br/public/style_emoticons/)default/cry.gif [http://forum.imasters.com.br/public/style_emoticons/](http://forum.imasters.com.br/public/style_emoticons/)default/cry.gif protected $_path;
function __construct($path = "") {
# Alterando o tempo máximo de execução
set_time_limit(0);
# Abrindo o servidor FTP
$this->_conn = @ftp_connect(self::FTP);
if ($this->_conn == false) { $this->onError("conexao"); }
# Autenticando
if (@ftp_login($this->_conn, self::LOGIN, self::SENHA) == false) { $this->onError("auth"); }
$this->setPath($path);
}
function __destruct() {
if ($this->_conn)
ftp_close($this->_conn);
}
function mkdir($dir) {
if (@ftp_mkdir($this->_conn, $this->_path.$dir) == false)
$this->onError("mkdir");
}
function setPath($path) {
#$path = str_replace("../", "", $path);
if (ftp_chdir($this->_conn, self::HOME.$path) == false) {
$this->onError("path");
} else {
$this->_path = self::HOME.($path[strlen($path)-1] != "/" ? $path."/" : $path);
}
}
function saveFile($upFile, $nameFile, $sizeFile) {
ftp_chmod($this->_conn, 0755, $this->_path);
ftp_chdir($this->_conn, $this->_path);
$status = ftp_nb_put($this->_conn, $upFile, $nameFile, FTP_ASCII, FTP_AUTORESUME);
flush();
ob_flush();
while ($status == FTP_MOREDATA) {
echo "Upado: ", ftp_size($this->_conn, $upFile), " de ", $sizeFile, "<br />";
$status = ftp_nb_continue($this->_conn);
}
echo "<br /><br /><br />";
ob_end_flush();
if ($status != FTP_FINISHED) { $this->onError("saveFile"); }
}
function ls() {
$ls = @ftp_nlist($this->_conn, $this->_path);
if ($ls == false) { $this->onError("ls"); }
for ($i = 0, $t = count($ls); $i < $t; $i++) {
echo str_replace($this->_path, "", $ls[$i]), "<br>";
}
}
function onError($err) {
switch($err) {
case "conexao":
$msg = "Não foi possivel conectar ao servidor de ftp. Por favor tente novamente dentro e alguns instantes.";
break;
case "auth":
$msg = "O login ou a senha fornecidos não confere, por favor tente novamente com outra combinação de login/senha.";
break;
case "mkdir":
$msg = "Não foi possível criar o diretório.";
break;
case "ls":
$msg = "Não foi possível listar conteúdo do diretório.";
break;
case "path":
$msg = "Não foi possível encontrar o diretório.";
break;
default:
$msg = "Ocorreu um erro interno e a aplicação não pode executada.";
}
throw new exception($msg);
}
}
Ela conecta, autentica, muda o diretório, cria, etc.... porém quando executo o método saveFile, ele não exibe quanto que já foi upado do arquivo... Alguém tem alguma idéia do que possa ser ???
Abraços a todos
PS: Eu já tinha postado isso ontem, mas não sei porque, foi apagado. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif
Discussão (1)
Carregando comentários...