Ir para conteúdo

POWERED BY:

Arquivado

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

©JOÃO GABRIEL MARQUES

Erro na função mkdir() e upload

Recommended Posts

Olá mestres...beleza?

 

Bom, tenho o código abaixo, porém, o diretório não tá sendo criado e, conseqüentemente, o upload não tá sendo feito, fora que dá erro do header. Deem uma olhada:

 

$arquivo = $_FILES['nome_imagem'];
$nome_arquivo = $_FILES[$arquivo]['name'];
$tipo_noticia = $_POST['tipo_noticia'];
$categoria = $_POST['categoria'];

if(file_exists("../../noticias/$tipo_noticia/$categoria/imagens")) {
	$diretorio = "../../noticias/$tipo_noticia/$categoria/imagens";
} else {
	mkdir("../../noticias/$tipo_noticia/$categoria/imagens", 0777);
	$diretorio = "../../noticias/$tipo_noticia/$categoria/imagens";	
}

$arquivo_temporario = $_FILES[$arquivo]['tmp_name'];
	move_uploaded_file($arquivo_temporario, "$diretorio/$nome_arquivo");

header("Location:upload_ok.php");

 

Onde eu tô errando??

 

E agradeço ao hinom por sempre me dar boas dicas. Valeu aee!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu erro ta logo aqui:

 

//seu erro
$arquivo = $_FILES['nome_imagem'];
$nome_arquivo = $_FILES[$arquivo]['name'];

//erro aqui tmb
arquivo_temporario = $_FILES[$arquivo]['tmp_name'];



//modo certo
$arquivo = $_FILES['nome_imagem'];
$nome_arquivo = $arquivo['name'];

$arquivo_temporario = $arquivo['tmp_name'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, tem razão! Não tinha visto isso! Mas ainda não consegui criar diretórios. Eu sei que não pode dar nenhuma saída pro HTML antes do header(), mas pensei que essa regra valesse só pro "echo" ou "print", porém, tá dando erro no uso da função mkdir(). Vejam o que eu tô fazendo:

 

$diretorio = "../../imagens";
mkdir($diretorio, 0777);

Tem algo errado nesse código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá João,

 

Estás usando Windows ou Linux?

 

Segundo você, essa instrução abaixo, retorna verdadeiro?

 

<?php

$diretorio = '../../imagens';

if (mkdir($diretorio, 0777))
{
   echo 'Criado';
}
else
{
	echo 'Erro ao criar';
}

?>

Tente trocar o 0777 por 777.

 

Sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae povo...certo??

 

Então, criei os diretórios normalmente, mas o mkdir() não funcionou dentro do contexto que eu queria. Vou explicar: na minha área administrativa de notícias tenho uma página que cadastra os tipos de notícias e as categorias. Tenho 2 tipos cadastrados: "Nacional" e "Internacional". Já nas categorias (é um site de música) tenho 4: "Geral", "Shows", "Festivais" e "Curiosidades". Tenho uma página de upload que carrega uma imagem para uma determinada notícia, de acordo com o id da notícia passado na url. Tenho uma variável $tipo_noticia que recebe $_POST[tipo_noticia] e tenho uma variável $categoria que recebe o conteúdo $_POST[categoria]. A estrutura do código deve ser a seguinte:

 

Se o diretório "../../noticias/$tipo_noticia/$categoria" não existir, o PHP deve criar; caso contrário, atribuir "../../noticias/$tipo_noticia/$categoria" como conteúdo a uma variável $diretorio.

 

Foi isso que eu tentei fazer, e seria interessante porque se eu fosse entregar isso para um cliente qualquer, ele não teria o trabalho de criar um diretório para cada novo tipo de notícia ou categoria cadastrados. Sacaram?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um teste simples num arquivo separado

 

mkdir.php

<?php

function handleError() {
	trigger_error('MY ERROR');

	/** usage sample
		@handleError();
		echo $php_errormsg;
	*/
}

// detect slash/backslash nomenclature dirname
$path = dirname( __FILE__ );
$slash = '/'; strpos( $path, $slash ) ? '' : $slash = '\\';
define( 'BASE_DIR', $path . $slash );

$folder  = time();			   // folder name
$dirPath = BASE_DIR . $folder;   // folder path

// print results
echo $slash;
echo '<hr>';

$rs = @mkdir( $dirPath, '0777' );
@handleError();
if( $rs )
{

	// print success information
	echo 'was done!';
	echo '<br>folder: <a href="' . $folder . '">' . $folder . '</a>';
	echo '<br>dirPath: ' . $dirPath;

}else{
	
	// print error information
	echo 'an error was occurred. Attempting create folder';
	echo '<br>dirPath: ' . $dirPath;
	echo '<br>php_errormsg: ' . $php_errormsg;

}


?>

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.