Ir para conteúdo

POWERED BY:

Arquivado

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

Kripton11235

Arquivo ñ pode ser copiado para o servidor[]

Recommended Posts

Tenho o seguinte código:

if (!empty ($nome_arquivo))

{

if ($sobrescrever == "nao" && file_exists("$caminho_absoluto/$nome_arquivo"))

die("Arquivo já existe.");

 

if (($limitar_tamanho == "sim") && ($tamanho_arquivo > $tamanho_bytes))

die("Arquivo deve ter no máximo $tamanho_bytes bytes.");

 

$ext = strrchr($nome_arquivo,'.' );

 

if ($limitar_ext == "sim" && !in_array($ext,$extensoes_validas))

die("Extensão de arquivo inválida para upload.");

 

if(move_uploaded_file($arquivo_temporario, "$caminho_absoluto/$nome_arquivo"))

{

$extensao = explode(".", $nome_arquivo);

 

if($extensao[1] == "ppt" or $extensao[1] == "pptx" or $extensao[1] =="pps")

{

 

$sql = mysql_query("INSERT INTO arquivopowerpoint VALUES('','$nome_arquivo')")

or die("Erro no SQL: ".mysql_error());

 

echo "<p align = center>O upload do arquivo<b>". $nome_arquivo."

</b>foi concluído com sucesso.</p>";

 

echo "<p align = center><a href = upload.html>Novo upload</a></p>";

 

}

 

if($extensao[1] == "mp3" or $extensao[1] == "wma")

{

 

$sql = mysql_query("INSERT INTO audio VALUES('','$nome_arquivo')")

or die("Erro no SQL: ".mysql_error());

 

echo "<p align = center>O upload do arquivo<b>". $nome_arquivo."

</b>foi concluído com sucesso.</p>";

 

echo "<p align = center><a href = upload.html>Novo upload</a></p>";

 

}

 

}

 

else

echo "<p align = center>O arquivo não pode ser copiado para o servidor.</p>";

}

 

Funciona perfeitamente para texto e imagens,mas com arquivos de áudio e power point,retorna que o arquivo não pode ser copiado para o servidor.O que pode estar causando isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa linha:

if ($limitar_ext == "sim" && !in_array($ext,$extensoes_validas))

 

Limita as extensões possíveis...

 

Procura onde decala o array $extensoes_validas e vê se as extensões que você quer estão lá...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estão.Tenho o arquivo para configuração do upload que é o seguinte:

 

<?php

//*** Parâmetros de c onfiguração da operação ***

// Limitar as extensões?(sim ou não)

$limitar_ext = "sim";

 

//extensões autorizadas

$extensoes_validas = array(".gif",".jpg",".jpeg", ".bmp", ".doc", ".docx", ".ppt", ".pptx", ".pps", ".pdf", ".mp3", ".wma" );

//caminho absoluto onde os arquivos serão armazenados

$caminho_absoluto = "C:\Arquivos de programas\EasyPHP 2.0b1\www\siteCeal\imagens";

 

//Limitar o tamanho do arquivo?(sim ou não)

$limitar_tamanho = "não";

// tamanho limite do arquivo em bytes

$tamanho_bytes = "200000";

 

//se já existir o arquivo, indica se ele deve ser sobrescrito(sim ou não)

$sobrescrever = "nao";

 

?>

 

Tentei aumentar a variável $tamanho_bytes,mas mesmo assim não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A linha:

$ext = strrchr($nome_arquivo,'.' );

Não deixa a extensão do arquivo em minusculas, se você tentar enviar um arquivo .PPT ele vai dar erro.

 

 

Deixa ela assim:

$ext = strtolower(substr($nome_arquivo, strrpos($nome_arquivo, '.')));

 

Acho que é um meio mais seguro de conseguir a extensão do arquivo..

 

Outra coisa:

200000 bytes equivalem a cerca de 195,3 Kb, o que é muito pouco... Aumenta esse valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz a alteração que mencionou e o erro persiste.Só é exibida a mensagem "Arquivo não pode ser copiado para o servidor" no caso de ocorrer alguma falha com a função move_uploaded_file, o script funciona com arquivos de texto e imagens,não compreendi por que este erro ocorre.Teria alguma relação com o tamanho dos arquivos?Embora no código há uma variável que determina isso.E muito obrigado pela sua ajuda amigo,agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só agradeça quando não houver mais problema :P

 

Vamos lá..

 

Dá um die(print_r($_FILE)); no começo do script que tá no arquivo pro qual o FORM envia os dados... Me mostra o que retornou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um die(print_r($_FILE)); no começo do script que tá no arquivo pro qual o FORM envia os dados... Me mostra o que retornou...

Não é FILE é FILES.

 

print_r($_FILES);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retorno do comando die(print_r($_FILES)):

Array ( [arquivo] => Array ( [name] => Midias de Transmissao.ppt [type] => [tmp_name] => [error] => 2 => 0 ) ) 1

 

E o arquivo html do form é o seguinte:

<!--

Document : upload

Created on : 14/06/2008, 07:35:55

Author : daniel

-->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

</head>

<body>

<?php include "valida_cookies.inc"; ?>

<h2 align="center">Upload de Arquivos </h2>

<form method="POST" action="executa_upload.php" enctype="multipart/form-data">

<input type="hidden" name="MAX_FILE_SIZE" value="200000">

<p align="center">Arquivo: <input type="file" name="arquivo" size="30">

<p align="center"><input type="submit" value="Enviar arquivo">

 

</form>

<p align="center"> <a href="logout.php">Logout</a></p>

</body>

</html>

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.