Leobreda.Net
HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL
Pesquisa por: upload
11 de setembro de 2009 09:03140 visitas
Conforme o artigo anterior - Acessando servidores FTP -, estou incrementando a forma de poder acessar o FTP de determinado servidor, atráves do FireFox.
Trata-se do uso de um componente (ou melhor, um complemento) chamado FireFTP. Este componente possui uma vantagem sobre o acesso padrão do Windows Explorer: é rápido, não trava o explorer.exe do computador e não corrompe as informações dos arquivos enviados.
1. Vá até o site https://addons.mozilla.org/pt-BR/firefox/search?q=fireftp e efetue o download da última versão do FireFTP; instale o complemento.
2. Abra o FireFox, abra o menu Ferramentas e clique em FireFTP.

Nesta janela, o FireFTP é apresentado. Do lado esquerdo, temos os arquivos salvos em seu computador; do lado direito, temos os arquivos salvos no servidor.
3. Clique no combo ao lado de Connect e escolha a opção Create an account...

4. Na janela que surge - Account Manager -, informe um alias em Account Name; no campo Host, informe o endereço FTP fornecido. Em ID, informe também o seu Login e Password para acesso; clique em OK.

Por segurança, não é necessário informar seu Password; caso isso ocorra, será necessário informar toda vez que você conectar ao servidor FTP, como na figura abaixo.

5. Volte para a tela principal, e clique em Connect.
Pronto! Você já está acessando o servidor FTP e poderá visualizar os arquivos do lado direito da janela.

Para enviar um arquivo ao servidor FTP, clique nos arquivos do lado esquerdo da tela, e clique na seta apontada p/ o lado direito; para trazer os arquivos do servidor FTP para seu computador, selecione os arquivos (ou pastas) do lado direito e clique na seta pontada p/ o lado esquerdo.
04 de agosto de 2009 06:50201 visitas
Dias atrás tive um certo problema com o ASP: efetuar upload nele é a pior coisa que existe, ainda mais em arquivos com mais de 2MB.
Hoje em dia, não basta upload de imagens e documentos do Word e PDF, pois sabemos que a maioria dos sites já estão trabalhando com conteúdos multimídia, tais como áudio e vídeo.
Existe uma solução paga que resolve o problema, as empresas de hospedagem possuem tal componente instalado, porém você não vai pagar para ter uma DLL instalada em sua estação de desenvolvimento por uma simples função de upload.
A minha solução foi esta aqui: separar as páginas que efetuam o UPLOAD em linguagem PHP.
Para efetuar o upload:
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="arquivo" />
<input type="submit" value="upload" />
</form>
Arquivo upload.php
<?php
include_once("cla_arquivo.php");
$objArquivo = new Arquivo;
$objArquivo->diretorio = c:\site\arquivos\";
$objArquivo->arquivo = $_FILES["arquivo"];
$objArquivo->tamanho = 4096000; //tamanho máximo: 4mb
$objArquivo->arquivo = $arquivo;
$objArquivo->EfetuaUpload();
$titulo = $objArquivo->titulo; //retorna o nome do arquivo tratado dentro do método
$erro = $objArquivo->erro; //retorna mensagem de erro (se houver)
$tamanho = $objArquivo->tamanho; //retorna o tamanho do arquivo (em bytes)
unset($objArquivo); //destrói o objeto
Classe Arquivo - cla_arquivo.php
Class Arquivo
{
var $diretorio;
var $titulo;
var $tamanho;
var $arquivo;
var $erro;
###########################################################################################################
# Efetua o upload do arquivo
#
# Entra: diretorio : Diretório de destino
# tamanho : Tamanho máximo do arquivo (em bytes)
# arquivo : Arquivo binário + caminho do arquivo (lado cliente)
#
# Retorna: arquivo : O nome do arquivo tratado
# tamanho : Tamanho do arquivo (em bytes)
# erro : Mensagem de erro
###########################################################################################################
function EfetuaUpload()
{
$diretorio = strtolower(trim($this->diretorio)); //Diretório de destino
$tamanho = $this->tamanho; //Tamanho máximo do arquivo (em bytes)
$arquivo = $this->arquivo; //Arquivo binário
$this->erro = ''; //Nenhum erro até agora
$this->$titulo = $arquivo['name']; //Nome do arquivo
//Verifica se ultrapassou o tamanho máximo de arquivo Tolerância: 10%
if(intval($arquivo['size'])>intval($tamanho*1.1))
{
$this->erro = 'O tamanho do arquivo ultrapassou ' . $tamanho . ' Bytes';
unset($diretorio, $tamanho, $titulo, $arquivo);
return;
}
//Trata o nome do arquivo, com limite de 30 caracteres
$objArquivo = new Arquivo;
$titulo = $objArquivo->TratarNomeArquivo(strtolower($titulo), 30);
//Cria diretório de destino (se necessário)
$objArquivo->CriarDiretorio($diretorio);
unset($objArquivo);
//Insere a barra "\" no final do diretório, se não houver a mesma
if(substr($diretorio, strlen($diretorio)-1, 1)!="\")
{
$diretorio+="";
}
//Efetua o Upload. ATENÇÃO: Verifique se o diretório temporário aceita mover arquivos. Consulte php.ini...
if(!move_uploaded_file($arquivo['tmp_name'], $diretorio.$titulo))
{
$this->erro = 'Não foi possível efetuar o upload. Favor contate o Administrador. Código de erro:'.$arquivo['error'].' Descrição do erro:'.print_r($arquivo).': '.mysql_error();
echo($arquivo);
unset($diretorio, $titulo, $tamanho, $arquivo);
return;
}
//Devolve o novo nome do arquivo, tamanho, e mensagem de erro em branco
$this->titulo = $titulo;
$this->tamanho = intval($arquivo['size']);
$this->erro = '';
unset($diretorio, $titulo, $tamanho, $arquivo);
}
###########################################################################################################
# Trata o nome do arquivo, retirando determinados caracteres
# Saída: Nome do arquivo sem pontuação, espaço e acentuação.
###########################################################################################################
function TratarNomeArquivo($arquivo, $tamanho=0)
{
//1. Separa a extensão do arquivo
$extensao = substr($arquivo, strrpos($arquivo, "."));
//2. Separa apenas o nome do arquivo, sem extensão
$arquivo = str_replace($extensao, "", $arquivo);
//3. Retira acentuação
$arquivo = str_replace("á", "a", $arquivo); $arquivo = str_replace("à", "a", $arquivo); $arquivo = str_replace("ã", "a", $arquivo); $arquivo = str_replace("â", "a", $arquivo);
$arquivo = str_replace("é", "e", $arquivo); $arquivo = str_replace("è", "e", $arquivo); $arquivo = str_replace("ê", "e", $arquivo);
$arquivo = str_replace("í", "i", $arquivo); $arquivo = str_replace("ì", "i", $arquivo);
$arquivo = str_replace("ó", "o", $arquivo); $arquivo = str_replace("ô", "o", $arquivo); $arquivo = str_replace("ô", "o", $arquivo);
$arquivo = str_replace("ú", "u", $arquivo); $arquivo = str_replace("ù", "u", $arquivo); $arquivo = str_replace("ü", "u", $arquivo);
$arquivo = str_replace("!", "", $arquivo); $arquivo = str_replace("@", "", $arquivo); $arquivo = str_replace("+", "-", $arquivo);
$arquivo = str_replace(" ", "_", $arquivo); $arquivo = str_replace("___", "_", $arquivo); $arquivo = str_replace("__", "_", $arquivo);
//4. Limita a quantidade de caracteres
if($tamanho!=0)
{$arquivo = substr($arquivo,0, $tamanho-1);}
return $arquivo.$extensao;
}
###########################################################################################################
# Cria diretório
###########################################################################################################
function CriarDiretorio($diretorio)
{
$diretorio = str_replace("/", "", $diretorio);
$diretorioX = explode("", $diretorio);
$diretorioY = $diretorioX[0];
for($i=1;$i<count($diretorioX);$i++)
{
$diretorioY.="". $diretorioX[$i];
if($i>2) //Evita considerar que "C:" seja diretório, como também diretórios virtuais
{
if(!is_dir($diretorioY)){mkdir($diretorioY, 0777);}
}
}
}
}
Você pode incrementar a classe Arquivo com métodos para excluir arquivos e diretórios:
###########################################################################################################
# Exclui arquivo
###########################################################################################################
function ExcluirArquivo()
{
$diretorio = strtolower($this->diretorio); //Diretório onde consta o arquivo
$arquivo = $this->arquivo; //Arquivo a ser deletado
if(file_exists($diretorio.$arquivo))
{
unlink($diretorio.$arquivo);
}
}
###########################################################################################################
# Exclui diretório
###########################################################################################################
function ExcluirDiretorio()
{
$diretorio = strtolower($this->diretorio);
if(is_dir($diretorio)) // verifica se realmente é uma pasta
{
if($handle = opendir($diretorio)) //Abre o diretório
{
while(false !== ($file = readdir($handle))) // Varre cada um dos arquivos da pasta
{
if(($file == ".") or ($file == ".."))
{
continue;
}
if(is_dir($file)) // verifica se o arquivo atual é uma pasta
{
// caso seja uma pasta, faz a chamada para a funcao novamente
$objExcluir = new Arquivo;
$objEcluir->diretorio = $diretorio . $file;
$objExcluir->ExcluirDiretorio();
unset($objExcluir);
} else
{
// caso seja um arquivo, exclui ele
unlink($diretorio.$file);
}
}
// fecha a pasta aberta
closedir($handle);
rmdir($diretorio); //exclui o diretório
}
}
}