Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

montano

achando extensao de arquivo

Recommended Posts

Boa tarde,

 

Nao estou conseguindo achar a extensao de um arquivo:

 

    function findExt($filename)
    {
        $ext = strrchr($filename, '.');
        if ($ext) {
            return $ext;
        } else {
            return "unknown";
        }
    }

    $tipo = $this->findExt($_FILES['userfile']['type']); // Soh como exemplo  

Ele me retorna unknown sempre.

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o pathinfo()

 

<?php
$path_parts = pathinfo('/www/htdocs/index.html');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n"; 
echo $path_parts['filename'], "\n"; // desde o PHP 5.2.0
?>

http://br2.php.net/manual/pt_BR/function.pathinfo.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

['type']

 

vai te devolver algo como:

[type] => image/jpeg

http://br2.php.net/manual/en/reserved.variables.files.php

 

se quer trabalhar pra achar a extenção apartir do ponto ( . ), tente com o ['name']

Mas ainda assim, atente ao retorno da função que você usou:

http://br2.php.net/strrchr

Compartilhar este post


Link para o post
Compartilhar em outros sites

informações do tipo image/jpeg eu consigo retornar soh usando o [userfile][type]

 

eu queria pegar apartir do ponto mesmo.. e consegui usando o [userfile][name], claro é no nome que contem o .no [type] ele nem informa .jpg e sim /jpg.

 

 

valeu pessoal.

 

Tenho uma outra duvida eu posso fazer usando GET pq quero fazer por AJAX e nao sei trabalhar com POST com ajax. seria a mesma coisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, 'tanto faz'.

 

O que diferencia GET de POST é a quantidade de informações que você pode enviar, e a segurança da aplicação, já que por GET os dados enviados ficarão mais expostos.. e a página que recebe eles, pode ser 'testada' por qualquer um..

Compartilhar este post


Link para o post
Compartilhar em outros sites

William esta dando um erro:

 

[14-Jan-2010 15:26:03] PHP Warning: move_uploaded_file(/home/teste/public_html/extranet/Dicas/imagens/dir/alex.png) [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: failed to open stream: No such file or directory in /home/teste/App/model/dao/UploadDao.php on line 72

[14-Jan-2010 15:26:03] PHP Warning: move_uploaded_file() [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: Unable to move '/tmp/phpnil8Qc' to '/home/teste/public_html/extranet/Dicas/imagens/dir/alex.png' in /home/apul/App/model/dao/UploadDao.php on line 72

 

 

classe

<?php
//Verificação de Segurança
$url = $_SERVER['PHP_SELF'];
if (eregi("UploadDao.php", "$url")) {
    header("Location: ../index.php");
}


require_once ('Executar.php');

class UploadDao extends Executar
{

    public $tipo;
    public $nome;
    public $tamanho;

    function __construct()
    {
        require ('/home/teste/App/config/config.php');
        parent::__construct($servidor, $usuario, $senha, $bd);
    }

    function execute()
    {

        $tipos[0] = ".gif";
        $tipos[1] = ".jpg";
        $tipos[2] = ".jpeg";
        $tipos[3] = ".png";

        if (isset($_FILES['userfile'])) {
            if ($this->UploadArquivo("/home/teste/public_html/extranet/Dicas/imagens/dir/", $tipos)) {
                $nome = $this->nome;
                $tipo = $this->tipo;
                $tamanho = $this->tamanho;
            } else {
                echo "Falha no envio<br />";
            }
        }
    }

    function findExt($filename)
    {
        $ext = strrchr($filename, '.');
        if ($ext) {
            return $ext;
        } else {
            return "unknown";
        }
    }


    function UploadArquivo($pasta, $tipos)
    {
        if (isset($_FILES['userfile'])) {
        	$name = $_FILES['userfile']['name'];
            $tipo = $this->findExt($_FILES['userfile']['name']);
			$tamanho = $_FILES['userfile']['size'];

            foreach ($tipos as $type){
                if ($type == $tipo) {
                    $arquivoPermitido = true;
                }
            }

            if ($arquivoPermitido == false) {
                echo "Extensão de arquivo não permitido!!";
                exit;
            }

			if (move_uploaded_file($_FILES['userfile']['tmp_name'], $pasta . $name)) {
                $this->nome = $name;
                $this->tipo = $tipo;
                $this->tamanho = number_format($tamanho / 1024, 2) . "KB";
                return true;
            } else {
                return false;
            }
        }
    }

}



?>
Nao entendi o erro tambem. :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você pode fazer assim:

 

function findExt($filename)
{
	$path_parts = pathinfo($filename);
	return $path_parts['extension'];
}

Na função move_uploaded_file, o segundo parâmetro acho que tem que ser relativo (algo como ./extranet/Dicas/imagens/dir/ )

 

Pra verificar se a extensão é permitida, pode usar o in_array(), mas tem que remover o . antes dos tipos no array:

 

//lista de tipos permitidos
$tipos = array('gif', 'jpg');

function UploadArquivo($pasta, $tipos)
{
	if (isset($_FILES['userfile'])) 
	{
		$name = $_FILES['userfile']['name'];
		$tipo = $this->findExt($_FILES['userfile']['name']);
		$tamanho = $_FILES['userfile']['size'];
	
		//verifica se aceita tipo do arquivo
		if (in_array($tipo, $tipos) == FALSE) 
		{
			echo "Extensão de arquivo não permitido!!";
			exit;
		}
	
		if (move_uploaded_file($_FILES['userfile']['tmp_name'], $pasta . $name)) 
		{
			$this->nome = $name;
			$this->tipo = $tipo;
			$this->tamanho = number_format($tamanho / 1024, 2) . "KB";
			return TRUE;
		} else 
		{
			return FALSE;
		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.