Ir para conteúdo

POWERED BY:

Arquivado

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

pinoc

[Resolvido] Upload de arquivo

Recommended Posts

Seguinte minha duvida acho que é facil de resolver, to precisando fazer um upload de arquivo até ai sem problema sei fazer tranquilo porem preciso fazer o upload permitir apenas arquivos em PDF ou DOC esse negocio de permição do arquivo que ta o meu problema não faço a minima como fazer.

 

Se alguem pode me ajudar agradeço muito..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça ua verificação com preg_match:

if(preg_match("/\.(pdf|doc){1}$/i", $arquivo['name'], $extensao)){
/* $extensao = extensao do arquivo */
$ext = end($entensao);
   $nome = 'arquivo'.'.'.$ext;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
   // Função que recupera a extensão do arquivo
   function getType($fileName) {
   	$type = strtolower(end(explode('.', $fileName)));
   	return $type;
   }
   // Verificando
   $img = $_FILES['minhaImagem'];
   $type = getType($img['name']);
   $allow = array('jpg', 'pdf', 'jpeg', 'pjpeg', 'png', 'gif');

   if(!in_array($type, $allow)) { // Se a extensão do arquivo não for permitida
   	die('Arquivo em formato inválido.');
   } else {
   	// Continue com o upload
   }
?>

Não deu para eu testar, mas creio que dará certo! Qualquer coisa assovia aqui! Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não recomendo fazer essa verificação somente pela extensão. Mas sim pelo mime.

Fiz essa classe as pressas pra um projeto pequeno. Vou colocar o uso e depois a classe:

 

Espero que isso possa lhe ajudar. Estou indo para a casa, abraços.

 

Upload.php

<?php
require_once 'class.upload.php';
$upload = new Upload;
// Fazendo o upload do cv
$upload->setPath('cvtemp');
$upload->setFile($_FILES['cv']);
$upload->setPermitedExtensions(array('doc', 'docx'));
$upload->setMimeAllowed(array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/msword'));
$file = $upload->doUpload();
if($file == FALSE){
die('nao foi possivel fazer o upload');
}
unlink($file);
?>

 

class.upload.php

<?php

Class Upload {

private $_permited_extensions;
private $_mime_verify;
private $_mime_allowed;
private $_path;
private $_file;

public function __construct()
{
	$this->_permited_extensions = array();
	$this->_mime_verify = FALSE;
	$this->_mime_allowed = array();
}

public function doUpload()
{
	if(!$this->verifyExtension($this->_file)){
		return FALSE;
	}

	if(move_uploaded_file($this->_file['tmp_name'], $this->_path . '/' . $this->_file['name'])){
		return $this->_path . '/' . $this->_file['name'];
	}

	return FALSE;
}

public function setFile($file)
{
	$this->_file = $file;
}

public function setPath($path)
{
	$this->_path = $path;
}

public function setMimeAllowed($mimes = array())
{
	if(count($mimes)>0){
		$this->_mime_verify = TRUE;
	}
	$this->_mime_allowed = $mimes;
}

public function getMimeAllowed()
{
	return $this->_mime_allowed;
}

public function setPermitedExtensions($exts = array())
{
	$this->_permited_extensions = $exts;
}

public function getPermitedExtensions()
{
	return $this->_permited_extensions;
}

public function mimeVerify($is_mime_verify)
{
	$this->_mime_verify = $is_mime_verify;
}

public function isMimeVerify()
{
	return $this->_mime_verify;
}

private function verifyExtension($objfile)
{
	$pass = TRUE;
	$x = explode('.', $objfile['name']);
	$ext = $x[count($x)-1];

	// Checking the extension
	if(!in_array($ext, $this->getPermitedExtensions())){
		$pass = FALSE;
	}

	// Checking the mime if it is set
	if($this->isMimeVerify()) {
		if(!in_array($objfile['type'], $this->getMimeAllowed())) {
			$pass = FALSE;
		}
	}

	return $pass;
}

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu?

 

Sim da um erro, estranho.

Se bem que tambem tem que ver se não to fazendo caca.

 

   function getType($fileName) {
       $type = strtolower(end(explode('.', $fileName)));
       return $type;
   }
   // Verificando
   $arq = $_FILES['arquivo'];
   $type = getType($arq['name']);
   $allow = array('pdf', 'doc');
   $pag = $_POST['pag'];
$arquivo = $arq['name'];
$tmp = $arq['tmp_name'];
$pasta = '../arquivos/';

   if(!in_array($type, $allow)) { // Se a extensão do arquivo não for permitida
       echo"<script language=javascript>alert('Formato invalido.')</script>";
       echo"<script language=javascript>location.href='$pag'</script>";
	exit;
   }else{

	if(move_uploaded_file($tmp, $pasta.$arquivo)){
	echo"<script language=javascript>alert('Arquivo enviado.')</script>";
       echo"<script language=javascript>location.href='$pag'</script>";
	exit;
	}	

   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, pode testar e ver, gettype serve como um var_dump, mas diferente.

Exemplo:

$array = array('este', 'é', 'uma', 'array');
$type = gettype($array);
echo $type;
//Saída: array

Mude a função para esse nome, por exemplo, getTypeFile:

function getTypeFile($fileName) {
       $type = strtolower(end(explode('.', $fileName)));
       return $type;
   }

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.